我实际上玩ember js而且我很困惑,关于观察者的行为。
App.ProjectView = Ember.View.extend({
modelChanged: function() {
console.log('modelChanged to: ');
this.get('controller.model.images').forEach(function(item) {
console.log(item.get('src'));
});
}.observes('controller.model.images')
});
如果我进入这条路线,这个观察者会被召唤两到三次。但我不明白为什么,也找不到任何有用的信息。
感谢您的帮助。
答案 0 :(得分:3)
在创建和填充对象时,您最终可能会多次触发观察者。在上面的例子中,可能是model.images被创建并设置为undefined ... bam!观察员被触发。然后将model.images的内容设置为一个实际的空数组... bam!观察员被触发。然后内容开始填充数组... bam!嘭!嘭!多个观察员可以开火。
有很多方法可以解决这个问题,就像只使用model.images做一些长度> 0或定义。如果您知道正在加载的数据的长度,则只能在长度匹配时处理观察者。这些方法将根据您的应用程序的结构而有所不同。