我实际上在玩 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')
});
如果我访问该路线,这个观察者会被调用两到三次。但我不明白为什么,也找不到任何进一步的信息。
感谢您的帮助。
最佳答案
在创建和填充对象时,观察者可能会多次触发。在上面的示例中,可能创建了 model.images 并将其设置为未定义...砰!观察者触发。然后 model.images 的内容被设置为一个实际的空数组......砰!观察者触发。然后内容开始填充数组......砰!嘭!嘭!多名观察员可能会开火。
有一些方法可以解决这个问题,例如仅在 model.images 的长度 > 0 或已定义时对其执行某些操作。如果您知道正在加载的数据的长度,则只能在长度匹配时处理观察者。这些方法将根据您的应用程序的结构而有所不同。
关于ember.js - emberjs 中一个观察者多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668540/