ember.js - emberjs 中一个观察者多次调用

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

如果我访问该路线,这个观察者会被调用两到三次。但我不明白为什么,也找不到任何进一步的信息。

感谢您的帮助。

最佳答案

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

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

关于ember.js - emberjs 中一个观察者多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668540/

相关文章:

ember.js - 当不存在路由时链接 View 、 Controller 和模型的正确习惯用法是什么?

Javascript/Ember - 切换变量的 boolean 值

javascript - Ember 数据 - 适配器没有方法 'map'

ember.js - Ember JS : Remove record from hasMany relationship and update view

javascript - Ember.js/Ember 数据在创建数千个子记录后需要几分钟来更新 hasMany of parent

javascript - 使用 ember 渲染助手时无法保存模型

ember.js - Ember 在嵌套路由中切换导航

javascript - 如何使用错误子状态在 Ember.js 中显示整页错误?

javascript - 加载 Ember 数据时捕获事件

ember.js - Ember.Select 能否呈现内容 promise