从子控制器设置父控制器属性

时间:2015-06-13 14:57:43

标签: ember.js

我的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路线中,我有viewnewNew只应显示后退按钮,view应显示后退按钮和打印按钮。 所以在view控制器中我指定了一个属性。

import Ember from 'ember';

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

但是当我导航到flyers路线时,view的父控制器显然没有看到该属性,因此我的打印按钮没有显示。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:9)

据我了解,您希望在{{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);
  }
});