ember.js - 跨控制器共享的常用功能 - 弹出窗口,通知

时间:2013-11-19 13:42:33

标签: ember.js code-reuse

我在ember.js上发了很多关于它的文章,并做了一些基本的东西 - 一些沙盒和测试用品,有很多出口,动作,ajax等完整的登录界面...但我现在面临一个问题。

Ember.js用于“单页应用程序”,我没有找到方法(但是?)如何在更多“ember应用程序”/部件中制作和共享基本功能?

我有一些后端,然后是一些模块(用户,文件,新闻......),每一个都是经典的:

App = Ember.Application.Create()

但我需要一些共享功能,我不想在每个应用中重复 - 我希望能够显示一些通知 - 一次来自用户应用,然后来自文件应用等等。或者拥有统一模态窗口,或者检查服务器背景中的某些内容并将更新推送到每个应用程序部分上运行的通知区域的功能......

我该如何解决?有没有办法扩展基础应用程序?或者必须在一个相互通信的页面上分离App?我也读过一些关于Ember名称空间的内容,但我不确定它是否是正确的以及如何使用它:(

注意:每个模块(仪表板,用户,文件......)都作为新页面加载(完整的html,新脚本......),但模块本身可以作为SPA和AJAX使用。

Ember.js有很棒的文档,但关于如何使用它的真实单词示例文章正在缓慢显示,我没有幸运地发现在现实世界中解决这个问题的一些啧啧/文章。

2 个答案:

答案 0 :(得分:1)

您可以设置另一个模块并在同一页面中将其作为另一个ember应用程序运行,定义应用程序的根元素

var AppNotification = Ember.Application.create({
  rootElement: '#notifications'
});

var AppUsers = Ember.Application.create({
  rootElement: '#users'
});    

因此,您需要将主要应用与div(#dashboard,#users,#files)和另一个div相关联。

我不知道是否可以从一个应用程序与另一个应用程序进行通信,这是非常先进的,但您可以调查余烬仪器...... http://emberjs.com/api/classes/Ember.Instrumentation.html

祝你好运

答案 1 :(得分:1)

我记得(啤酒启发)我几个月前读过的另一种方式...... load async code from the router JSBin example

您可以使用this SO answer

获取通知js并使用模板