11

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

Ember 的设计者认为,路由器强制执行的是,对于给定的 BaseName(例如“Application”、“CustomerEntry”、“My Items”)应该有一个 BaseNameView 和一个 BaseNameController。--灰烬指南

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

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

4

1 回答 1

2

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

<h1>Here are two files, compare them</h1>
{{view App.MyFileView contentBinding="leftFileContent"}}
{{view App.MyFileView contentBinding="rightFileContent"}}

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

控制器是单例的一个可能原因是它们能够在全局命名空间中通过类似App.router.myController.

于 2012-10-23T04:04:08.047 回答