Подсчитать итоговую сумму
Я создаю магазинную тележку. Я использовал крепежный адаптер. Мои модели
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
});
Как я могу рассчитать общую стоимость?
1 ответ
Решение
Вы можете собрать свойство ReduceComputed для sum
, Вот несколько ссылок для вдохновения: один, два и три. По сути, вы можете сделать что-то вроде этого:
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')
});