0
我有這樣一個視圖對象的意見收集的屬性的屬性:如何獲得計算上
App.ThingView = Ember.View.extend({
things: App.thingsController,
weightBinding: 'content.weight',
unitConversionFactorBinding: 'App.thingsController.unitConversionFactor',
percentWeight: function() {
var weight = this.getPath('content.weight');
var totalWeight = this.getPath('things.totalWeight');
return (weight/totalWeight) * 100;
}.property('content.weight', 'things.totalWeight'),
weightUnits: function() {
var weight = this.getPath('content.weight');
var unitConversionFactor = this.get('unitConversionFactor');
return weight * unitConversionFactor;
}.property('content.weigth', 'unitConversionFactor'),
});
而這一觀點被用於迭代控制器陣列,像這樣:
{{#each App.thingsController tagName="ul"}}
{{#view App.ThingView contentBinding="this"}}
{{weight}} - {{percentWeight}} % - {{weightUnits}}
{{#view deleteButton}}Delete{{/view}}
{{/view}}
{{/each}}
我想顯示總計weigthUnits,基本上遍歷#each助手呈現的視圖並添加它們。這可能嗎?或者是否需要恢復將所有這些計算的屬性邏輯放入模型中(以便從控制器訪問聚合計算)?我已經設置了這裏的jsfiddle: http://jsfiddle.net/sohara/MuwDd/19/
感謝您的建議,但出於幾個原因,我需要將該邏輯保留在模型之外。一個是我的計算函數中還有其他的依賴關係,這些依賴關係並不在這個簡化的例子中,而是依賴於系統中的控制器和其他對象。另一種情況是,一般來說,模型對象不應該知道它所屬的控制器的狀態......我想可能是mvc違規。 –
我更新了jsfiddle:http://jsfiddle.net/sohara/MuwDd/52/並嘗試使用視圖對象上的觀察者來更新控制器上的屬性...可能是反模式,但我看不到在這種情況下,我可以避免使用反模式...哦。 –
啊,沒有看到你的迴應。我認爲它可能在簡化中缺少一些東西,最後依靠控制器的模型會非常糟糕。你的解決方案確實看起來像一個小螞蟻模式,但如果它有效,那麼比我想象的要好。 –