Ember.js - 视图的模型观察者发射两次

时间:2014-01-22 09:00:28

标签: javascript ember.js

我希望在视图绑定的模型发生变化时运行一些视图代码。

我的观点在控制器模型上有一个观察者,如下所示:

App.SomeView = Em.View.extend
  modelDidChange: (()->
    # do stuff
  ).observes('controller.model')

当模型发生变化时,modelDidChange被称为两次

为什么?

有没有更好/不同的方式来实现我在这里尝试做的事情?

使用Ember 1.3.0。

3 个答案:

答案 0 :(得分:0)

您确定您的视图需要知道模型何时更改吗?视图的模板从控制器获取其属性,并在更改时自动更新。如果可以,你当然希望避免任何观察者。

但我对你的用例知之甚少,所以假设有必要,我会尝试debouncer。模型可能不会更改两次,事件只会被触发两次。 Ember在用户钩子之间发生了很多动作,因此模型可能只设置为相同的值两次。使用去抖动器只需调用一次方法。

答案 1 :(得分:0)

Ember.beginPropertyChanges();
  # model updates
Ember.endPropertyChanges();

答案 2 :(得分:0)

第一次触发,因为您在浏览器中进行了更改,并且该更改被发送到Ember数据存储,从而触发观察者回调。然后,商店向后端发出update请求,该请求以更新的模型响应,当商店收到此更新的模型时,它再次触发观察者回调。