2015-06-13 7 views
2

У меня есть flyers маршрут, который имеет шаблон под названием flyers.hbsУстановить родительский контроллер недвижимости от контроллера детского

<div class="button-wrap"> 
    <button {{action 'back'}}>Go Back</button> 
    {{#if isPrintable}} 
     <button {{action 'print'}} class="float-right">Print Flyer</button> 
    {{/if}} 
</div> 

{{outlet}} 

flyers В этом маршруте у меня есть view и new. New должен показывать только кнопку «Назад», а view должен отображать кнопку «Назад» и кнопку «Печать». Итак, в контроллере view я указал свойство, подобное этому.

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    isPrintable: true, 
}); 

Но очевидно, что родительский контроллер для flyers не видит, что свойство, когда я перейти к view маршруту поэтому моя кнопка печати не отображается.

Каков правильный способ сделать это?

+0

Похоже, что здесь не нужно гнездовать. Вы можете просто использовать параметр запроса 'isPrintable'. – artych

ответ

7

Как я понимаю, вы хотели бы иметь {{isPrintable}} в flyers шаблон со значением, зависящим от активного маршрута ребенка. Может быть, это выглядит хорошо для вас.

//flyers controller 
import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    isPrintable: true, 
}); 

//child route 
import Ember from 'ember'; 
export default Ember.Route.extend({ 

    parentController: Ember.computed(function() { 
    return this.controllerFor('flyers'); 
    }), 

    setupController: function(controller, model) { 
    this._super(controller, model); 
    this.get('parentController').set('isPrintable', false); 
    }, 

    deactivate: function() { 
    this.get('parentController').set('isPrintable', true); 
    } 
}); 
+0

Это хорошо работает для моего сценария, спасибо! – Jordan

Смежные вопросы