У меня есть модель с имущественными «таксы»Ember вычислен свойство из модельного массива
fees: DS.hasMany('fee')
и модель платы со свойством «количество»
amount: DS.attr('string')
в мой контроллер я хочу вычисляемый свойство, которое складывает все суммы гонораров, так что я это
feeTotal: Ember.computed('[email protected]', function() {
var total = 0;
this.get('model').get('fees').forEach(function(fee) {
total += Number(fee.get('amount'));
});
return total;
})
Это вычислить плату на начальном этапе, и recompu когда добавляется новый сбор, но он не пересчитывает, когда изменяется сумма комиссии. Например, при изменении следующего поля ввода будет обновлена сумма, но не вычисленная сумма.
{{#each model.fees as |fee|}}
{{input value=fee.amount type="number" placeholder="Fee Amount"}}
{{/each}}
Я пропустил что-то в том, как написано рассчитанное свойство?
работает, если вы измените DS.attr ('string') на DS.attr ('number')? –
нет, это не меняет результат. Проблема в том, что он не распознает изменения в свойстве, независимо от того, что это строка или число. – cswright
Код выглядит хорошо для меня, хотя я заметил, что здесь упоминается подобная проблема после обновления ember. Если вы действительно отчаялись, вы можете попробовать '' 'Ember 2.0'''. Только совет, который я могу предоставить, состоит в том, что вы можете вычислять суммы и подобные вещи с помощью [reduce] (http://emberjs.com/api/classes/Ember.Enumerable.html#method_reduce) и в основном делать вычисляемые функции с одним слоем. – Keo