Javascript 返回每个模型的属性总和的计算属性
我有一个购物车模型,然后里面有一些类似这样的东西Javascript 返回每个模型的属性总和的计算属性,javascript,ember.js,ember-data,computed-properties,Javascript,Ember.js,Ember Data,Computed Properties,我有一个购物车模型,然后里面有一些类似这样的东西 [ { "item_id": 1, "item_name":"Item 1", "item_price": 500 }, { "item_id": 2, "item_name": "Item 2", "item_price": 230 }, { "item_id": 3, "ite
[
{
"item_id": 1,
"item_name":"Item 1",
"item_price": 500
},
{
"item_id": 2,
"item_name": "Item 2",
"item_price": 230
},
{
"item_id": 3,
"item_name": "Item 3",
"item_price": 150
}
]
我需要汇总item\u price
属性,以便能够显示它,然后将其传递给ember data或ajax调用以完成购买
不确定我是否只是不理解计算的agregate数据,但我正在尝试这个
totalDue: Ember.computed.sum('model.@each.item_price')
在控制器上,但返回0
我在余烬
2.2.0
您可以这样做:
totalDue: Ember.computed('model.@each.item_price', function() {
const model = this.get('model');
if (!model) {
return 0;
}
let sum = 0;
model.forEach(item => sum += Ember.get(item, 'item_price'));
return sum;
})
export default Ember.Controller.extend({
model: [
{
"item_id": 1,
"item_name":"Item 1",
"item_price": 500
},
{
"item_id": 2,
"item_name": "Item 2",
"item_price": 230
},
{
"item_id": 3,
"item_name": "Item 3",
"item_price": 150
}
],
array: Ember.computed.mapBy('model', 'item_price'),
sum: Ember.computed.sum('array'),
});
您可以这样做:
totalDue: Ember.computed('model.@each.item_price', function() {
const model = this.get('model');
if (!model) {
return 0;
}
let sum = 0;
model.forEach(item => sum += Ember.get(item, 'item_price'));
return sum;
})
export default Ember.Controller.extend({
model: [
{
"item_id": 1,
"item_name":"Item 1",
"item_price": 500
},
{
"item_id": 2,
"item_name": "Item 2",
"item_price": 230
},
{
"item_id": 3,
"item_name": "Item 3",
"item_price": 150
}
],
array: Ember.computed.mapBy('model', 'item_price'),
sum: Ember.computed.sum('array'),
});
您也可以将其作为一个非常干净的内衬:
totalDue: Ember.computed('model.@each.item_price', function() {
return this.get('model').mapBy('item_price').reduce((a, b) => a + b, 0);
})
您也可以将其作为一个非常干净的内衬:
totalDue: Ember.computed('model.@each.item_price', function() {
return this.get('model').mapBy('item_price').reduce((a, b) => a + b, 0);
})
您也可以这样做:
totalDue: Ember.computed('model.@each.item_price', function() {
const model = this.get('model');
if (!model) {
return 0;
}
let sum = 0;
model.forEach(item => sum += Ember.get(item, 'item_price'));
return sum;
})
export default Ember.Controller.extend({
model: [
{
"item_id": 1,
"item_name":"Item 1",
"item_price": 500
},
{
"item_id": 2,
"item_name": "Item 2",
"item_price": 230
},
{
"item_id": 3,
"item_name": "Item 3",
"item_price": 150
}
],
array: Ember.computed.mapBy('model', 'item_price'),
sum: Ember.computed.sum('array'),
});
您也可以这样做:
totalDue: Ember.computed('model.@each.item_price', function() {
const model = this.get('model');
if (!model) {
return 0;
}
let sum = 0;
model.forEach(item => sum += Ember.get(item, 'item_price'));
return sum;
})
export default Ember.Controller.extend({
model: [
{
"item_id": 1,
"item_name":"Item 1",
"item_price": 500
},
{
"item_id": 2,
"item_name": "Item 2",
"item_price": 230
},
{
"item_id": 3,
"item_name": "Item 3",
"item_price": 150
}
],
array: Ember.computed.mapBy('model', 'item_price'),
sum: Ember.computed.sum('array'),
});
获取
model.forEach不是一个函数
,而且模型是在模型钩子中的路由上定义的,只是还没有使用ember数据或ajax调用。另外,我在ember2.2.0
上,您能给我看一下控制器中的console.log(this.get('model'))
值吗?那么模型是否在控制器上定义?如果没有,则在使用前必须在setupController
hook-in路由中设置model
属性。很抱歉,您的代码工作正常,因为我发布了此消息,所以我将路由设置为返回多个模型,因此将行this.get('model')
更改为this.get('model.items'))
workedGettingmodel.forEach不是一个函数
,模型也在模型钩子中的路由上定义,只是还没有使用ember数据或ajax调用。另外,我在ember2.2.0
上,您能给我看一下控制器中的console.log(this.get('model'))
值吗?那么模型是否在控制器上定义?如果没有,则在使用前必须在setupController
hook-in路由中设置model
属性。很抱歉,您的代码工作正常,因为我发布了此消息,所以我将路由设置为返回多个模型,因此将行this.get('model')
更改为this.get('model.items'))
workedEmber.computed.sum
做了一些不同的事情:它只是将数组值属性中的值相加。Ember.computed.sum
做了一些不同的事情:它只是将数组值属性中的值相加。获取this.get(…).mapBy不是控制台中的一个函数
错误。如果将此-控制台.log(this.get('model'))
-放在返回
语句上方,它会为您输出什么?抱歉,我忘了将模型切换为RSVP哈希,所以我需要使用模式.items
来获取模型哈希的items部分。啊,好的。:-)获取this.get(…).mapBy在控制台中不是一个函数
错误。如果将此-console.log(this.get('model'))
-放在return
语句上方,它会为您输出什么?抱歉,忘了我将模型切换到RSVP哈希,所以我需要使用模式.items
来获取模型哈希的items部分。啊,这样就可以了。:-)