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

stu*_*nik 5 javascript ember.js

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

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

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

当模型改变时,modelDidChange被调用两次.

这是为什么?

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

使用Ember 1.3.0.

GJK*_*GJK 0

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

但我对你的用例不太了解,所以假设有必要,我会尝试debouncer。模型很可能没有更改两次,事件只是被触发了两次。Ember 在用户挂钩之间发生了很多操作,因此模型可能只是设置为相同的值两次。使用防抖器让您的方法仅被调用一次。