2014-02-17 72 views
6

當一個控制器被實例化後初始化或者爲特定路由重新初始化時,是否有事件或鉤子應該用來捕獲?控制器在Ember中更改模型的事件?

我已經試過init() - 但是我的控制器在應用程序的生命週期中僅實例化一次,但支持取決於路徑的多個模型。我需要捕捉的是當控制器的模型發生變化時,或者在路由發生變化時實例化之後的某個時刻。

我也試着設置一個計算的屬性,但它是不是真的合適,因爲我需要一個觸發事件,一種功能,當模型發生變化 - 不僅在財產被調用。

任何幫助非常感謝。


編輯:啊!我完全看了一下這個事實,即我可以在我的函數上設置observes(),以便在模型更改時觸發它。

所以,我的回答是做到以下幾點:

dependency: function() { 
    console.log('the model has changed'); 

    //...other stuff... 
}.observes('model') 
+1

看看這裏http://emberjs.com/guides/routing/setting-up-a-controller/ – fanta

+1

Zaemz,請把它作爲你的答案,並將其標記爲已接受(可用時)。 – Kingpin2k

+0

@ kingpin2k會做。 –

回答

8

從我的編輯:

啊哈!我完全看了一下,我可以在我的 函數上設置觀察值(),以便在模型更改時觸發。

所以,我的回答是做到以下幾點:

dependency: function() { 
    console.log('the model has changed'); 

    //...other stuff... 
}.observes('model') 
+0

嘿,這是一個很好的做法,使用觀察,我讀的地方是增加了性能。 – whyAto8

+0

@ whyAto8我沒有看到任何理由,這將是一個壞主意。 的API在最新版本的餘燼實際上已經改變了(我沒有在很長一段時間,現在用它。) 我會做一些閱讀和更新我的答案。目前,我會按照文檔:https://guides.emberjs.com/v2.7.0/object-model/observers/ –

相關問題