2014-10-06 107 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