计算子总计emberjs [英] Calculate sub total emberjs

查看:127
本文介绍了计算子总计emberjs的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个商店购物车。我使用夹具适配器。
我的模型

  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')+$;
}。属性('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
});

我如何计算总价?

sum 的reduceComputed属性放在一起。以下是几个灵感链接:一个 two ,html#method_reduceComputed =nofollow>基本上你可以这样做:

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

addedItem:function(cumulativeValue,item,changeMeta,instanceMeta){
return accumulationValue + item;
$,

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

然后,在您的控制器中执行如下操作:

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


I create a shop cart. I using fixture adapter. My models

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 = [];

Route

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

And my controller

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

How i can calculate a total price?

解决方案

You can put together a reduceComputed property for sum. Here are a few links for inspiration: one, two, and three. Basically, you can do something like this:

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;
    }
  });
};

Then, in your controller do something like this:

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

这篇关于计算子总计emberjs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆