我希望有人可以为我们的团队解决这个问题。为什么控制器单例恰好不会在导航中重置?在什么情况下最好不要每次都重置。我听说过“控制器作为单例在任何长期存在的应用程序中都非常有意义”,但是与我交谈过的非余烬开发人员对此同样感到困惑。这是将来会改善的设计缺陷,还是我们只是以错误的方式看待事物?

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

最佳答案

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

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

基于路由的控制器是单例的,因为路由是简单的东西,通常在实例化后在应用程序的生命周期内一直存在。

Ember在路线之间转换时不需要拆除控制器和路线,因为在租用路线时唯一需要更改的就是控制器的content / model属性。

如果需要,在路由转换中清除控制器的内容很简单。我最近刚刚回答了一个关于这样做的问题,并且还从商店中卸载了模型:
https://stackoverflow.com/a/26695922/2238268

单例控制器对于管理应用程序中的其他状态(可能是全球会话/身份验证状态)也很有用。

因此,Ember确实提供了单例控制器和实例控制器,并且根据业务逻辑的复杂性,它们都被大量使用。我倾向于保持我的模型比较简单,并在控制器中放置任何与路由无关的内容。我在控制器中进行脏跟踪和撤消/还原,并在控制器中进行持久模型更改的编排。除了路由级别控制器之外,我还有很多实例控制器,它们支持视图并实现可跨越许多模型的更新逻辑。

07-24 09:50
查看更多