Ember多个控制器实例

h--*_*--n 11 model-view-controller ember.js

我已经使用了Ember一段时间,但有时仍在努力寻找最佳实践.所以关于控制器和视图的Ember方法之一是

由路由器强制执行的Ember设计者的意见是,对于给定的BaseName(例如"Application","CustomerEntry","My Items"),应该有BaseNameView和BaseNameController.- 灰烬指南

问题是,如果我想在页面上的同一视图的多个实例,该怎么办?由于控制器是在应用程序启动期间创建的,因此它们是应用程序命名空间下的单例,它们将无法容纳模型数据的两个实例.

我看到的一个解决方案是手动创建控制器(和模型数据)并将它们传递给视图.但在这种情况下,我希望Ember不会自动为我创建控制器.换句话说,为什么Ember会在应用程序启动期间将控制器创建为单例.

Ken*_*ing 2

我认为在很多用例中,视图类型没有相应的控制器类型。特别是当视图类型更像是 UI 小部件而不是成熟的应用程序功能时。许多视图可以共享同一个控制器。看看这个 applicationView 模板:

<h1>Here are two files, compare them</h1>
{{view App.MyFileView contentBinding="leftFileContent"}}
{{view App.MyFileView contentBinding="rightFileContent"}}
Run Code Online (Sandbox Code Playgroud)

这将创建我的视图类的两个实例,并将它们的内容属性绑定到 applicationController 上的两个不同属性。这两个视图的控制器属性都设置为单例 applicationController 实例。

控制器是单例的一个可能原因是它们能够通过类似App.router.myController.