1
我有一個應用程序與幾條路線,每個模板中應顯示(或隱藏)的元素 - 使用相同的條件,因此我創建了一個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')
})
所以在把手模板詳細信息我可以用它喜歡:
{{#if canEdit}}
[Edit Button]
{{/if}}
反正條件數的增長,我需要overrride e中的每個條件方法ach控制器,這不是最佳的。
問題:如何在直接指向Central
控制器的視圖中使用這些條件?
Vesions:
- 灰燼:
1.1.2
- 把手:
1.0.0
記住你也可以在'get'&'set'中使用dotpaths - 這是Emb的一部分呃NextStep的遺產。節省大量的輸入 - 特別是當鏈的任何部分爲空時,你需要一個null值,'get' /'set'會爲你做。注意Demeter;) –
這就是我錯過的知識;)thx,順便說一句,這種方法有一些顯着的性能影響? – biesior
我沒有對它進行基準測試。我懷疑這是否意義重大,只要你沒有創建相互依賴的屬性,需要許多通行證來解決,這是使用'observes'時必須注意的。在'get' /'set'中使用dotpaths手動構建鏈的唯一開銷是最初的字符串分割。 –