为什么Ember的控制器单身人士?

时间:2014-11-08 01:14:31

标签: javascript ember.js ember-data

我希望有人可以为我们的团队解决这个问题。为什么控制器单身人士不会在导航时重置?在什么情况下,他们每次都不能重置。我已经听过"控制器作为单身人士在任何长期存在的应用程序中都非常有意义。但是,我所谈到的非虚构的开发者同样对此感到困惑。这是一个未来正在改进的设计缺陷还是我们只是以错误的方式看待事物?

希望得到一个非常明确的答案,我可以回到团队。谢谢大家!

1 个答案:

答案 0 :(得分:1)

并非所有控制器都是单例,大多数应用程序在迭代集合时都会为每个模型创建实例控制器。 Ember为您动态创建一个控制器。

我使用控制器来包装我的所有模型实例,例如编辑具有多个地址模型的联系人

基于路由的控制器是单例,因为路由是singetons,并且一旦实例化,通常会在应用程序的生命周期内持续存在。

当在路线之间转换时,Ember不需要拆除控制器和路线,因为在重新设置路线时唯一需要改变的是控制器内容/模型属性。

如果您愿意,清除路由转换中控制器的内容是微不足道的。我刚刚回答了一个关于这个问题的问题,并且还从商店卸载了模型: https://stackoverflow.com/a/26695922/2238268

Singleton控制器也可用于管理应用程序中的其他状态,可能是全局会话/身份验证状态。

因此,Ember提供了单例和实例控制器,并且它们都被大量使用,具体取决于业务逻辑的复杂性。我倾向于保持我的模型相当简单,并在控制器中放置任何与路径无关的东西。我在控制器中执行脏跟踪和撤消/恢复以及控制器中持久模型更改的编排。除了路由级别控制器之外,我还有许多实例控制器支持视图并实现可以跨越许多模型的更新逻辑。