【发布时间】:2012-10-22 15:52:07
【问题描述】:
我使用 Ember 已经有一段时间了,但有时仍然在努力寻找最佳实践。所以关于控制器和视图的 Ember 方法之一是
Ember 设计者的观点是,路由器强制执行的是,对于给定的 BaseName(例如“Application”、“CustomerEntry”、“My Items”)应该有一个 BaseNameView 和一个 BaseNameController。 -- Ember guide
问题是,如果我想要一个页面上同一视图的多个实例,该怎么办。由于控制器是在应用程序启动期间创建的,因此它们是应用程序命名空间下的单例,无法保存模型数据的两个实例。
我看到的一个解决方案是手动创建控制器(和模型数据)并将它们传递给视图。但在这种情况下,我希望 Ember 不会为我自动创建控制器。换句话说,为什么 Ember 会在应用程序启动期间将控制器创建为单例。
【问题讨论】:
-
您确定需要拥有同一个控制器的多个实例吗?听起来您可以将不同的控制器与您需要的不同视图相关联。控制器不保存模型数据的不同实例,它们通常使用绑定将数据代理到视图。我对 Ember 架构的理解是 Views 的想法是严格负责 DOM/CSS 内容和处理用户事件。应用程序逻辑保留在路由器/控制器级别,因此拥有多个不同的控制器可能是有意义的,即使它们代理相同的数据。
标签: model-view-controller ember.js