我有一条加载所有订单商品的路线。每个订单商品都有一个产品。在控制器中,我想通过遍历所有订单商品并将order-item.quantity
乘以product.price
来计算订单总数。但是,order.get('product.price')
不会返回价格。我认为这是因为这种关系是异步的。 total
计算属性的结果为NaN
。我该如何解决?谢谢!
我还创建了一个JSBin http://emberjs.jsbin.com/lisedavela/edit?html,js,output
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('order-item');
}
});
App.IndexController = Ember.Controller.extend({
total: function() {
return this.get('model').reduce(function(total, order) {
return total + order.get('product.price');
}, 0);
}.property('model.@each.quantity')
});
App.OrderItem = DS.Model.extend({
quantity: DS.attr('number'),
product: DS.belongsTo('product', { async: true })
});
App.Product = DS.Model.extend({
title: DS.attr('string'),
price: DS.attr('number')
});
App.Product.reopenClass({
FIXTURES: [
{ id: 100, title: 'Product A', price: 10 },
{ id: 200, title: 'Product B', price: 20 },
{ id: 300, title: 'Product C', price: 30 }
]
});
App.OrderItem.reopenClass({
FIXTURES: [
{ id: 1, quantity: 5, product: 100 },
{ id: 2, quantity: 2, product: 200 },
{ id: 3, quantity: 1, product: 300 }
]
});
答案 0 :(得分:0)
如果您想访问模型,那么您必须通过商店:
this.store.find("model", id).then(function(result) {
// Do something with result, the model, here.
});
如果您想从另一个控制器访问控制器,您可以执行以下操作:
this.get("controllers.[controllerName].[property]");