@canop wrote:
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 offruitCountArray
. 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
andEmber Data 2.3.0
.
Posts: 2
Participants: 2