2

我正在编写一个 Ember 应用程序,它由一些复杂的、有状态的组件组成。我很难理解 Ember 如何处理这种应用程序,因为它不是传统的 CRUD 应用程序。

它是一个高度交互的单页应用程序。一些示例组件是 Xmpp 文本聊天、多方音频、Xmpp 共享白板和弹出通知

有一个全局状态(我可以看到通过路由器处理)设置用户上下文(我在音频/白板上与谁一起工作)。我不太明白的是,如果路由器在设置与音频和白板无关但仍然有状态的聊天上下文中扮演什么角色。我无法想象来自路由器的 URL 字符串如何同时反映所有这些组件的状态。

这是我完全跳过使用路由器的情况吗?如果是这样,我如何链接我的应用程序的视图/控制器?到目前为止,我一直在使用路由器的 connectOutlets 方法来链接我的视图和控制器。如果不调用此方法,那么执行此绑定的另一种(结构化和有组织的)方法是什么?

谢谢

4

1 回答 1

2

好问题!

  • 全局状态:使用路由器
  • 应用程序状态:在与您的应用程序组件关联的控制器单例中

作为一般规则,我建议使用路由器来管理用户可以添加书签或使用浏览器前进/后退按钮与之交互的状态。只是猜测,但对于可能包含白板 ID 的应用程序。

聊天、音频和通知等组件通常会独立于路由器而存在并维护状态。在某些情况下,这些组件的行为可能会根据路由而有所不同(例如,聊天可能会根据显示的白板绑定到特定频道),但聊天小部件本身的状态会作为属性存储在 ChatController 单例中。

ember 指南尚未完成,但您可能会发现控制器指南的最后一部分“存储应用程序属性”很有帮助http://emberjs.com/guides/controllers/

于 2013-01-03T21:50:15.913 回答