2013-05-07 116 views
0

Ember.jsObjectController有一個功能init()當控制器被實例化時觸發。有什麼辦法可以在控制器離開上下文時觸發一些額外的代碼?Ember.js控制器破壞功能

下面是我在做什麼在init()

init: function() { 
    jQuery("body").css("background-color", "#f2f1ec"); 
} 

在控制器上退出,或失去方面,我想簡單地再次改變背景色:

jQuery("body").css("background-color", "#333333"); 

感謝。

+1

將背景顏色設置爲Ember.View的'didInsertElement'鉤子不是更好嗎? – mehulkar 2013-05-07 23:42:54

+0

@MehulKar我想你是在這裏發現的,你能提供一個小例子? – Justin 2013-05-08 04:44:19

+0

寫了個答案! – mehulkar 2013-05-08 16:51:57

回答

1

我會創建一個自定義的視圖,並寫入在didInsertElement上的css更改,而不是在控制器中處理它。在這種特殊情況下,由於您使用的是body元素,因此您甚至可以在要尋找目標的路線的activatedeactivate函數中完成這項工作。 (如果這是進入前都是經過document.ready()

這裏的a fiddle使用路由器的activatedeactivate功能它可能如果你這樣做是對ApplicationRoute雖然是一個問題。不知道。

而這裏的風俗an example

+0

太棒了,用'didInsertEleme nt'和'willDestroyElement'。完美的作品。 – Justin 2013-05-08 17:52:06