Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在没有全局控制器的情况下从外部事件更新Ember.js数据_Javascript_Html_Ember.js - Fatal编程技术网

Javascript 在没有全局控制器的情况下从外部事件更新Ember.js数据

Javascript 在没有全局控制器的情况下从外部事件更新Ember.js数据,javascript,html,ember.js,Javascript,Html,Ember.js,我已经开始学习Ember.js,并一直在尝试创建一个包含一些数据的页面,当我收到一个事件(由web套接字推送)时,这些数据会更新 为了简单起见,我举了一个例子,其中我有一个节点列表,当我得到一个新节点时,我想在控制器上调用addNode来添加节点。然后UI应该更新 我的问题是,我做到这一点的唯一方法是拥有一个全局控制器,然后在我的模板中使用它,而不是在模板的模型中使用它 我希望将控制器链接到路由,并在事件到达时让控制器上的一个方法添加数据,而不是通过一些全局列表或其他方式。 这可能吗?如果是这样

我已经开始学习Ember.js,并一直在尝试创建一个包含一些数据的页面,当我收到一个事件(由web套接字推送)时,这些数据会更新

为了简单起见,我举了一个例子,其中我有一个节点列表,当我得到一个新节点时,我想在控制器上调用addNode来添加节点。然后UI应该更新

我的问题是,我做到这一点的唯一方法是拥有一个全局控制器,然后在我的模板中使用它,而不是在模板的模型中使用它

我希望将控制器链接到路由,并在事件到达时让控制器上的一个方法添加数据,而不是通过一些全局列表或其他方式。 这可能吗?如果是这样,怎么办

我已经包括了我的样品,所以你可以改变它,并告诉我如何做

js:

html:


{{{#每个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>