1

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

谢谢,杰森

4

2 回答 2

1

你必须把needs你的system控制器。

App.SystemController - Ember.Controller.extend({
   needs:['nodes']
});

在您的system模板中,

<script type="text/x-handlebars" id="system">
    {{#each controllers.nodes}}
        {{title}}
    {{/each}}
  </script>
于 2013-07-23T14:03:59.030 回答
1

这有点可疑,但我不确定 ember 家伙是否提供了另一种从外部获取控制器的方法。

jsbin

于 2013-07-23T00:45:50.747 回答