2

I actually play around with ember js and I'm confused, about the observer behavior.

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')
});

this observer is called two or three times if I access the route. But I did not understand why and can't find any furthur informations.

thanks for any help.

4

1 回答 1

3

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

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

于 2013-03-27T20:25:33.223 回答