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

Updating Ember.js data from external event without global controller

本文关键字:更新 事件 Ember js 数据 从外部 情况下 全局 控制器      更新时间:2023-09-26

我已经开始学习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>