以下内容呈现:Subtotal: P[object Object]
似乎小计是返回promise对象而不是所有订单的总和。 VARIATION 2
也会返回一个承诺。
我应该如何计算所有产品的小计?
// app/controllers/application.js
import Ember from 'ember';
export default Ember.ObjectController.extend({
subtotal: function() {
// VARIATION 1:
var productCollectionPromises = this.get('orders').getEach('product');
var sum = 0;
return Ember.RSVP.all(productCollectionPromises).then(function(productCollections){
productCollections.forEach(function(product){
sum += product.get('amountInCents');
});
return sum;
});
// VARIATION 2:
// return this.get('orders').mapBy('product').reduce(function(previousValue, product) {
// return previousValue + product.get('amountInCents');
// }, 0) / 100;
}.property('orders.@each.total'),
});
// app/templates/application.hbs
<br /><strong>Subtotal:</strong> ${{subtotal}}
答案 0 :(得分:3)
Ember.RSVP.all
会返回一个承诺,这是您要返回的内容,您只需创建一个观察者并在更改时更新subtotal
:
// app/controllers/application.js
import Ember from 'ember';
export default Ember.ObjectController.extend({
subtotal: null,
totalsChanged: function() {
var productCollectionPromises = this.get('orders').getEach('product');
var sum = 0;
Ember.RSVP.all(productCollectionPromises).then(productCollections => {
productCollections.forEach(function(product){
sum += product.get('amountInCents');
});
this.set('subtotal', sum);
});
}.observes('orders.@each.total'),
});