【发布时间】:2014-07-14 01:53:09
【问题描述】:
我有一个 Ember 数据模型,我正在尝试基于异步 hasMany 关系的属性来计算属性。出于某种原因,它似乎永远不会重新计算。我怎样才能正确地做到这一点?
代码:
export default DS.Model.extend({
splits: DS.hasMany('split', { async: true }),
amount: Ember.reduceComputed('splits.@each.amount', {
initialValue: 0,
addedItem: function(accValue, split) { return accValue + split.get('amount'); },
removedItem: function(accValue, split) { return accValue - split.get('amount'); }
})
/* Neither of these work either.
amount: Ember.computed.sum('splits.@each.amount') // This doesn't work
amount: Ember.computed('splits.@each.amount', function() {
return this.get('splits').reduce(function(pValue, split) {
return pValue + split.get('amount');
}, 0);
})
*/
});
失败的测试(预期为1350,得到0):
import { test, moduleForModel } from 'ember-qunit';
import Transaction from 'my-app/models/transaction';
moduleForModel('transaction', 'Unit - Transaction Model', {
needs: ['model:split']
});
test('amount', function() {
var transaction = this.subject();
var store = this.store();
transaction.get('splits').addObjects([
store.createRecord('split', { amount: 250 }),
store.createRecord('split', { amount: 1000 })
]);
equal(transaction.get('amount'), 1250);
});
【问题讨论】:
标签: ember.js ember-data