我希望在视图绑定的模型发生变化时运行一些视图代码。
我的观点在控制器模型上有一个观察者,如下所示:
App.SomeView = Em.View.extend
modelDidChange: (()->
# do stuff
).observes('controller.model')
当模型发生变化时,modelDidChange
被称为两次。
为什么?
有没有更好/不同的方式来实现我在这里尝试做的事情?
使用Ember 1.3.0。
答案 0 :(得分:0)
您确定您的视图需要知道模型何时更改吗?视图的模板从控制器获取其属性,并在更改时自动更新。如果可以,你当然希望避免任何观察者。
但我对你的用例知之甚少,所以假设有必要,我会尝试debouncer。模型可能不会更改两次,事件只会被触发两次。 Ember在用户钩子之间发生了很多动作,因此模型可能只设置为相同的值两次。使用去抖动器只需调用一次方法。
答案 1 :(得分:0)
Ember.beginPropertyChanges();
# model updates
Ember.endPropertyChanges();
答案 2 :(得分:0)
第一次触发,因为您在浏览器中进行了更改,并且该更改被发送到Ember数据存储,从而触发观察者回调。然后,商店向后端发出update
请求,该请求以更新的模型响应,当商店收到此更新的模型时,它再次触发观察者回调。