Javascript 在没有全局控制器的情况下从外部事件更新Ember.js数据
我已经开始学习Ember.js,并一直在尝试创建一个包含一些数据的页面,当我收到一个事件(由web套接字推送)时,这些数据会更新 为了简单起见,我举了一个例子,其中我有一个节点列表,当我得到一个新节点时,我想在控制器上调用addNode来添加节点。然后UI应该更新 我的问题是,我做到这一点的唯一方法是拥有一个全局控制器,然后在我的模板中使用它,而不是在模板的模型中使用它 我希望将控制器链接到路由,并在事件到达时让控制器上的一个方法添加数据,而不是通过一些全局列表或其他方式。 这可能吗?如果是这样,怎么办 我已经包括了我的样品,所以你可以改变它,并告诉我如何做 js: html:Javascript 在没有全局控制器的情况下从外部事件更新Ember.js数据,javascript,html,ember.js,Javascript,Html,Ember.js,我已经开始学习Ember.js,并一直在尝试创建一个包含一些数据的页面,当我收到一个事件(由web套接字推送)时,这些数据会更新 为了简单起见,我举了一个例子,其中我有一个节点列表,当我得到一个新节点时,我想在控制器上调用addNode来添加节点。然后UI应该更新 我的问题是,我做到这一点的唯一方法是拥有一个全局控制器,然后在我的模板中使用它,而不是在模板的模型中使用它 我希望将控制器链接到路由,并在事件到达时让控制器上的一个方法添加数据,而不是通过一些全局列表或其他方式。 这可能吗?如果是这样
{{{#每个App.NodesController}
{{title}}
{{/每个}}
谢谢,Jason,这有点可疑,但我不确定ember的人是否提供了另一种从外部获取控制器的方法
您必须将
需求
放入系统
控制器中
App.SystemController - Ember.Controller.extend({
needs:['nodes']
});
在您的系统中
模板中
<script type="text/x-handlebars" id="system">
{{#each controllers.nodes}}
{{title}}
{{/each}}
</script>
{{{#每个控制器.节点}
{{title}}
{{/每个}}
谢谢,这是对我的改进。我想。(也许还有更好的办法)。一件简单的事情:为什么需要将控制器设置为public?如果没有它,它似乎可以正常工作,我看到了,然后我扩展了NodeController,而不是create()?但是,如何从事件中推送项目?
App.SystemController - Ember.Controller.extend({
needs:['nodes']
});
<script type="text/x-handlebars" id="system">
{{#each controllers.nodes}}
{{title}}
{{/each}}
</script>