2015-09-26 16 views
0

我想要听取数组中每个元素的特定属性并从中获取结果。但是,更新似乎不正确。为什么没有一个烬观察员在数组上激发?

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/

正如你所看到的,文本字段仍然说“开始”和犯规得到更新为“哇噢!”。

任何帮助将不胜感激。

回答

1

的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); 

更新DOM正确地:

哇噢! CD:55

然后:

哇噢! CD:105

请注意,我用灰烬v1.13.10:

<script src="http://builds.emberjs.com/tags/v1.13.10/ember.min.js"></script> 

Working demo.