一个观察者在emberjs中多次调用

时间:2013-03-27 20:15:37

标签: ember.js ember-data

我实际上玩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')
});
如果我进入这条路线,这个观察者会被召唤两到三次。但我不明白为什么,也找不到任何有用的信息。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在创建和填充对象时,您最终可能会多次触发观察者。在上面的例子中,可能是model.images被创建并设置为undefined ... bam!观察员被触发。然后将model.images的内容设置为一个实际的空数组... bam!观察员被触发。然后内容开始填充数组... bam!嘭!嘭!多个观察员可以开火。

有很多方法可以解决这个问题,就像只使用model.images做一些长度> 0或定义。如果您知道正在加载的数据的长度,则只能在长度匹配时处理观察者。这些方法将根据您的应用程序的结构而有所不同。

相关问题