[英]Ember.js - view's model observer fires twice
我想在視圖綁定的模型發生變化時運行一些視圖代碼。
我的觀點在控制器模型上有一個觀察者,如下所示:
App.SomeView = Em.View.extend
modelDidChange: (()->
# do stuff
).observes('controller.model')
當模型更改時,將調用modelDidChange
兩次 。
這是為什么?
是否有更好/不同的方式來實現我在這里嘗試做的事情?
使用Ember 1.3.0。
您確定您的視圖需要知道模型何時更改嗎? 視圖的模板從控制器獲取其屬性,並在更改時自動更新。 如果可以,你當然希望避免任何觀察者。
但是我對你的用例知之甚少,所以假設有必要,我會嘗試一個debouncer 。 模型可能不會更改兩次,事件只會被觸發兩次。 Ember在用戶鈎子之間發生了很多動作,因此模型可能只設置為相同的值兩次。 使用去抖動器只需調用一次方法。
Ember.beginPropertyChanges();
# model updates
Ember.endPropertyChanges();
它是第一次觸發,因為您在瀏覽器中進行了更改,並且該更改被發送到Ember數據存儲,從而觸發觀察者回調。 然后,商店向后端發出update
請求,該update
請求以更新的模型響應,當商店收到此更新的模型時,它再次觸發觀察者回調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.