2014-01-17 75 views
2

我創建了一個購物車。我使用夾具適配器。 我的模型計算子總餘燼

App.Clothing = DS.Model.extend({ 
     name:  DS.attr('string') 
    , category: DS.attr('string') 
    , img:  DS.attr('string') 
    , price: DS.attr('number') 
    , num:  DS.attr('number') 
    , fullPrice: function(){ 
     return this.get('price') + " $"; 
    }.property('price') 
}) 

App.CartRecord = App.Clothing.extend({ 
    numInCart:DS.attr('number',{defaultValue:1}) 
    , fullPrice: function(){ 
     return this.get('price')*this.get('numInCart'); 
    }.property('numInCart','price') 
}) 
App.CartRecord.FIXTURES = []; 

路線

App.CartRoute = Em.Route.extend({ 
    model: function(){ 
     return this.store.find('cartRecord'); 
    } 
}) 

我的控制器

App.CartController = Em.ArrayController.extend({ 
    totalPrice: 0 
}); 

我該如何計算總價格?

回答

3

您可以爲sum組合一個reduceComputed屬性。以下是幾個靈感鏈接:one,twothree。基本上,你可以做這樣的事情:

Ember.computed.sum = function (dependentKey) { 
    return Ember.reduceComputed.call(null, dependentKey, { 
    initialValue: 0, 

    addedItem: function (accumulatedValue, item, changeMeta, instanceMeta) { 
     return accumulatedValue + item; 
    }, 

    removedItem: function (accumulatedValue, item, changeMeta, instanceMeta) { 
     return accumulatedValue - item; 
    } 
    }); 
}; 

然後,在你的控制器做這樣的事情:

App.CartController = Em.ArrayController.extend({ 
    prices:  Ember.computed.mapBy('content', 'fullPrice'), 
    totalPrice: Ember.computed.sum('prices') 
}); 
+0

但Ember.computed.sum( '@這@ each.fullPrice')迴歸購物車中的衣物清單。如果我在視圖呈現此

小計{{totalPrice}}

上頁我給: 0 rusnasonov

+0

我更新它使用一個新的從屬關鍵。我從來沒有真正嘗試'@ this。@ each.fullPrice'風格的語法。讓我知道這是否更好。這裏有一個jsFiddle它[在行動](http://jsfiddle.net/NQKvy/321/) – Adam

+0

謝謝!它工作的很好! – rusnasonov