gpt4 book ai didi

javascript - 为什么 Controller 在 Ember 中是单例的?

转载 作者:行者123 更新时间:2023-12-03 11:28:58 27 4
gpt4 key购买 nike

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

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

最佳答案

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

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

基于路由的 Controller 是单例的,因为路由是单例的,并且通常在实例化后在应用程序的生命周期中持续存在。

在路由之间转换时,Ember 不需要拆除 Controller 和路由,因为租用路由时唯一需要更改的是 Controller 内容/模型属性。

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

单例 Controller 对于管理应用程序中的其他状态也很有用,也许是全局 session /身份验证状态。

实际上,Ember 提供了单例 Controller 和实例 Controller ,并且根据业务逻辑的复杂性,它们的使用量都很大。我倾向于保持我的模型相当简单,并将任何与路由无关的内容放入 Controller 中。我在 Controller 中进行脏跟踪和撤消/恢复,以及在 Controller 中编排持久模型更改。除了路由级别 Controller 之外,我还有很多实例 Controller 支持 View 并实现可以跨越许多模型的更新逻辑。

关于javascript - 为什么 Controller 在 Ember 中是单例的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com