簡體   English   中英

Ember.js - 視圖的模型觀察者發射兩次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM