2013-01-03 39 views
2

我正在编写一个Ember应用程序,它由一些复杂的有状态组件组成。由于它不是传统的CRUD应用程序,因此我无法围绕Ember如何处理这类应用程序进行包装。具有Ember路由器的多个有状态组件

这是一个高度交互式的单页面应用程序。一些示例组件 XMPP文字聊天, 多方音频, XMPP共享白板,以及 流行起来通知

有一个全球性的状态(我可以看到通过路由器处理),设置用户环境(谁我正在使用音频/白板)。我不太明白的是,如果路由器在设置与音频和白板无关但仍具有状态的聊天上下文时发挥什么作用。我无法了解路由器的URL字符串如何同时反映所有这些组件的状态。

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

谢谢

+0

FYI有一个新的[路由器API(http://emberjs.com/guides/routing /),最近已将其添加到Ember中,并且已在Ember指南中进行了更新。 – CraigTeegarden

回答

2

好问题!

  • 全局状态:使用路由器
  • 应用程序状态:在控制器单身您的应用程序组件

作为一般规则相关,我建议使用路由器来管理国家,一个用户可以书签或使用浏览器前进/后退按钮进行交互。只是猜测,但为您的应用程序,可能包括白板的ID。

聊天,音频和通知等组件通常会存在并保持独立于路由器的状态。在某些情况下,这些组件的行为可能会有所不同(具体取决于显示哪个白板),但聊天窗口小部件的状态本身将作为属性存储在ChatController单例中。

余烬导板尚未完成,但你会发现控制器指南的最后一节“存储应用程序属性”乐于助人http://emberjs.com/guides/controllers/

+0

谢谢,清除了很多。 – weichsem

相关问题