我创建了一个购物车。我用夹具适配器。 我的模特
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
});
我如何计算总价?
答案 0 :(得分:3)
您可以将sum
的reduceComputed属性放在一起。以下是一些灵感链接:one,two和three。基本上,你可以做这样的事情:
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')
});