我正在循環訪問其內容設置爲RecordArray的ArrayController的內容。每個記錄是DS.Model,說客戶強制控制器始終作爲Ember中的模型的代理
{{# each item in controller}}
{{item.balance}}
{{/each}}
平衡是客戶端模型的財產和item.balance一個呼叫從模型直接獲取財產。我想應用一些格式來平衡以貨幣格式顯示。最簡單的方式做,這是添加計算的屬性,balanceMoney,給客戶對象和做的格式有:
App.Client = DS.Model({
balance: DS.attr('balance'),
balanceMoney: function() {
// format the balance property
return Money.format(this.get('balance');
}.property('balance')
});
這提供良好服務宗旨,爲balanceMoney計算財產權利的地方雖然是客戶端控制器而不是客戶端模型。我的印象是Ember在控制器中首先查找屬性,然後嘗試在模型中找到它們,如果沒有發現任何東西。儘管這裏沒有發生這種情況,但撥打item.balanceMoney的電話將被忽略,並且永遠不會到達控制器。
是否有可能以某種方式配置控制器,使其在任何情況下始終作爲模型的代理。
更新 - 使用emberjs主庫中的最新版本,您可以通過重寫ArrayController中的lookupItemController方法來配置數組控制器,以通過控制器代理解析記錄的方法。該方法應該返回控制器的名稱,而不用'controller'後綴,即客戶端而不是clientController。僅僅在數組控制器中設置itemControllerClass
屬性目前似乎不起作用。
lookupItemController: function(object) {
return 'client';
},
太好了,我正在使用主版本。我會試一試。我很高興我的問題符合整個問題的討論:) – ken