Reputation: 14251
I am trying to listen to specific property on every element in an array and get a result from that. However, updates dont appear to happen properly.
var emptyEmberObjectClass = Ember.Object.extend({});
var container = Ember.Object.extend({
data: Ember.A([
emptyEmberObjectClass.create({yo:1}),
emptyEmberObjectClass.create({yo:2}),
emptyEmberObjectClass.create({yo:3})
]),
computedData: Ember.computed('[email protected]', function(){
var sum = 0;
this.get('data').forEach(function(data){
sum = sum + data.yo;
});
return sum;
}),
test: Ember.observer('computedData', function(){
Ember.$('#a').html('woohoO!');
})
}).create();
var existingItem = container.get('data');
existingItem.objectAt(0).set('yo', 50);
http://jsfiddle.net/stb0nr2y/1/
As you can see, the text field still says 'start' and doesnt get updated to 'woohoO!'.
Any help will be greatly appreciated.
Upvotes: 0
Views: 39
Reputation: 18680
JavaScript:
var emptyEmberObjectClass = Ember.Object.extend({});
var container = Ember.Object.extend({
data: Ember.A([
emptyEmberObjectClass.create({yo:1}),
emptyEmberObjectClass.create({yo:2}),
emptyEmberObjectClass.create({yo:3})
]),
computedData: Ember.computed('[email protected]', function(){
var sum = 0;
this.get('data').forEach(function(data){
sum += data.get('yo');
});
return sum;
}),
testObs: Ember.on('init', Ember.observer('computedData', function() {
Ember.$('#a').html('woohoO! cd: `' + this.get('computedData') + '`');
}))
}).create();
var existingItem = container.get('data');
var target = existingItem.objectAt(0);
target.set('yo', 50);
target.set('yo', 100);
Updates DOM correctly with:
woohoO! cd:
55
and then:
woohoO! cd:
105
Please note that I'm using Ember v1.13.10:
<script src="http://builds.emberjs.com/tags/v1.13.10/ember.min.js"></script>
Upvotes: 1