Let’s have models:
Model: basket
export default DS.Model.extend({
fruits: DS.hasMany('fruit', { async: true }),
fruitCountArray: Ember.computed.mapBy('fruits', 'count'),
totalFruitCount: Ember.computed.sum('fruitCountArray')
});
Model: Fruit
export default DS.Model.extend({
name: DS.attr('string'),
count: DS.attr('number')
});
Jsbin with working example. Can someone explain why totalFruitCount
shows correct amount when page loads, but incorrect when value is updated by using given {{input}}
. Is it because I’m missing something or it’s just how it works?
As far as I can tell, its something with incorrect type, after value modification totalFruitCount
show appended array values of fruitCountArray
. I can easily fix it by implementing my own computed property with explicit parseInt (doing exactly same as demo if parseInt isn’t used) such as:
totalFruitCount: Ember.computed('fruits,@each.count', function() {
let sum = 0;
this.get('fruits').forEach(fruit => {
sum += parseInt(fruit.get('hours'));
});
return sum;
})
But it feels wrong to me when there is already computed property just for this use-case. I’m using Ember 2.3.0
and Ember Data 2.3.0
.