2014-12-06 137 views

回答

11

簡短的答案是,你不能。在路線有機會在控制器上設置模型之前,控制器由容器實例化。如果此對象控制器是由Ember自動爲您設置的控制器,則在初始化期間您將無法訪問該模型。嘗試觀察model屬性。

我無法在指南中找到任何文檔,因此I'll link you to the source code。如果您閱讀setup函數的源代碼,則會看到調用了generateController(),然後在稍後調用setupController()。本質上,控制器是創建的,Ember做了一些工作,然後模型被設置。 Ember在創建時不爲控制器設置模型。

+0

我明白了,我需要做的是設置虛擬機,因爲用戶交互與模型結構完全不同。我只會觀察模型的變化,然後創建我需要的屬性。看起來有點工作只是做這麼簡單的事情。 – FutuToad 2014-12-06 15:13:21

+1

不要忘記你的模型可以改變,這就是它在初始化期間沒有設置的原因。所以你的邏輯可能需要改變,它可能會運行不止一次。根據您的使用情況,可以使用[setupController](http://emberjs.com/api/classes/Ember.Route.html#method_setupController)或[resetController](http://emberjs.com/api/classes/Ember)。 Route.html#method_resetController)路線方法可能會幫助你。 – GJK 2014-12-06 15:18:29

+0

ah setupController看起來像我調用super()後所需要的,謝謝! – FutuToad 2014-12-06 16:00:50