强制路由以实例化新的控制器/视图对而不是更改模型

时间:2013-08-25 13:32:23

标签: javascript ember.js router ember-router

我想同时多次显示某个控制器/视图对。问题是路线改变了当前控制器上的模型,而不是创建一个新模型。

是否可以强制路由实例化新控制器?我已经尝试搞乱Ember.Route中的回调和钩子,但我找不到任何方法让它表现得像这样。

1 个答案:

答案 0 :(得分:1)

如果您想要同时显示多个模型,似乎让路线指向单个模型,这些模型的更改不能很好地映射到您尝试执行的操作。除非您使用嵌套路由,否则路由器不会将其他视图添加到显示中。您可以尝试覆盖路线中的renderTemplate hook并使用render()指定使用哪个控制器,但这对于同时显示多个控制器/视图对无效。

相反,我会尝试使用其中一种方法来指定自定义控制器。如果要显示一系列内容,最简单的方法是使用模板中的#each helper

{{#each product in products itemController='myControllerName'}}

如果您想指定自定义视图类,也可以这样做。

{{#each product in products itemController='myControllerName' itemViewClass='App.MyView'}}

根据您尝试做的事情,获取每次获取新实例的上下文的另一种方法是创建组件。但是,这更重要,您可能需要重构一些代码,将控制器逻辑移动到组件中。