在没有全局控制器的情况下从外部事件更新Ember.js数据
Updating Ember.js data from external event without global controller
我已经开始学习Ember.js,并一直在尝试制作一个包含一些数据的页面,这些数据在我收到事件(由web套接字推送)时会更新。
为了简单起见,我举了一个例子,其中我有一个节点列表,当我得到一个新节点时,我想在控制器上调用addNode来添加节点。然后UI应该更新。
我遇到的问题是,我做到这一点的唯一方法是拥有一个全局控制器,然后在我的模板中使用它,而不是我的模板模型。
我想将控制器连接到路由,并在控制器上有一个方法在事件到达时添加数据,而不是通过一些全局列表或其他方式
这可能吗?如果是,怎么办?
我已经包括了我的样品,所以你可以更改它,并向我展示它是如何完成的。
js:
x = {title : 'test'};
App = Ember.Application.create();
App.Router.map(function() {
this.resource("system");
});
App.NodesController = Ember.ArrayController.create({
content: [],
addNode: function(nodeInfo){
this.pushObject(nodeInfo);
}
});
html:
<script type="text/x-handlebars" id="system">
{{#each App.NodesController}}
{{title}}
{{/each}}
</script>
谢谢,Jason
这有点可疑,但我不确定ember是否提供了另一种从外部获取控制器的方法。
jsbin
您必须将needs
放入system
控制器中。
App.SystemController - Ember.Controller.extend({
needs:['nodes']
});
在您的system
模板中,
<script type="text/x-handlebars" id="system">
{{#each controllers.nodes}}
{{title}}
{{/each}}
</script>
相关文章:
- 使用ReactJS使用Redux的简单状态更新事件
- 用javascript更新事件函数中的全局变量
- 更新事件全日历中的开始参数
- 在页面切换时更新事件侦听器
- 通过拖放完整日历来更新事件 - Javascript
- 淘汰赛仅更新事件一次
- Watchify 更新事件永远不会在 Virtualbox 中触发
- ExtJs:确定在存储上触发更新事件的网格
- AngularJs:更新事件$scope
- jQuery UI's未激发可排序更新事件
- 如何更新事件
- 流星更新事件中的模板
- HTML5视频时间更新事件未启动
- html5视频的时间更新事件多久触发一次
- DOM树更改时更新事件处理程序
- 如何更改引导程序时间选择器更新事件的日期
- 更新事件中的反应变量
- jsxGraph点更新事件
- Chrome扩展选项卡on更新事件
- 主干(同步)更新事件