2014-10-06 68 views
1

我有一個帶有查看器模板,查看器控制器和代表查看器模板模型的項目列表的Ember應用程序。 該應用程序包含兩個主要功能:查看單個項目或比較兩個或更多項目。 對於單一視圖而言非常簡單:我只有一個查看器控制器實例,因爲我在用戶想要查看其他項目時更改了模型。 對於多個視圖我有一個問題:我有多個相同的查看器控制器實例,對於某些操作,我需要實例將該操作從路由發送到查看器控制器。對於單視圖,我使用controllerFor('name of it')獲取控制器的實例,但是當存在多個實例時,我不知道如何訪問特定的控制器實例。如何訪問控制器的實例

對於多視圖,用戶需要用鼠標選擇活動項目。在內部,模型中的項目只有在用戶單擊該項目時才具有選定的屬性。

一個想法,可能不是好的一個,將保持控制器實例在模型中的每個項目上。通過這種方式,我將查找所選項目,並從該項目中取出控制器實例。另一個想法是在選定的查看器控制器的實例上保留路由。

你知道用EmberJS訪問控制器的特定實例的最佳方法是什麼?

回答

0

我將父控制器設置爲ArrayController,itemController屬性設置爲您當前的查看器控制器。 http://emberjs.com/api/classes/Ember.ArrayController.html

然後,您可以在模板中使用{{#each}}渲染它們,如果需要,甚至可以指定一個視圖。

+0

這正是我擁有的情況:一個數組控制器,在UL列表中用{{each}}在模板中呈現。但是對於一些操作,我需要路由中itemController的正確實例,我不知道如何檢索它。 – shareit 2014-10-06 07:39:46

+0

你可以使用'arrayController.findBy('id',id);'從中獲得一個特定的控制器@shareit – Jakeii 2014-10-06 07:44:00

相關問題