灰烬,把手和共同条件

时间:2013-11-20 16:16:18

标签: if-statement ember.js handlebars.js conditional-statements

我有一个带有多个路径的应用程序,每个模板中都有应该显示(或隐藏)的元素 - 使用相同的条件,因此我创建了一个Central控制器,我在这里声明了条件和然后覆盖每个控制器中的方法,如(伪代码):

App.CentralController = Ember.Controller.extend({
    canEdit: function(){ return someCalculatedBool; }.property('view'),
    canSomethingElse: function(){ return someOtherBool; }.property('view')
});

App.DetailsController = Ember.Controller.extend({
    needs: ['central'], 
    canEdit: function(){ return this.get('controllers.central').canEdit() }.property('view'),
    canSomethingElse: function(){ return this.get('controllers.central').canSomethingElse(); }.property('view')
})  

所以在Handlebars模板中我可以使用它来像:

{{#if canEdit}}
    [Edit Button]
{{/if}}

无论如何条件计数增长,我需要覆盖每个控制器中的每个条件方法,这不是最佳的。

问题:如何在直接指向Central控制器的视图中使用这些条件?

Vesions:

  • Ember:1.1.2
  • 把手:1.0.0

1 个答案:

答案 0 :(得分:1)

只需在控制器中添加别名,并在视图中使用点路径:

App.DetailsController = Ember.Controller.extend({
  needs: ['central'],
  central: Ember.computed.alias('controllers.central')
});


{{#if central.canEdit}}
  [Edit Button]
{{/if}}