控制器上JS对象的访问属性

时间:2015-06-11 17:50:16

标签: ember.js handlebars.js javascript-objects

我创建了一个Ember.JS应用程序,我在ApplicationController上挂了一些需要在整个应用程序中可访问的属性。其中一个属性是按服务器名称(JS数组)细分的队列(JS对象)。在我的模板中,我想列出每个数组的项目,但我不确定如何做到这一点。我读了question,但我真的不明白答案。

对于我的代码,我有:

App.ApplicationController = Ember.Controller.extend({
  currentUser: null,
  queuedPlayers: {
    "The Bastion": [],
    "Begeren Colony": [],
    "The Harbinger": [],
    "The Shadowlands": [],
    "Jung Ma": [],
    "The Ebon Hawk": [],
    "Prophecy of the Five": [],
    "Jedi Covenant": []
  }
});

另一个控制器:

App.IndexController = Ember.Controller.extend({
  needs: ['application'],
  currentUser: Ember.computed.alias('controllers.application.currentUser'),
  queuedPlayers: Ember.computed.alias('controllers.application.queuedPlayers'),
  ...

在模板中:

{{#each server in servers}}
  <h2>{{server}}</h2>
  {{#each player in queuedPlayers[server]}}
    {{player}}
  {{/each}}
{{/each}}

servers是一组服务器(与queuedPlayers中的属性匹配)我将传递给模板以用作选择列表的内容属性,因此{{server}}标记渲染很好。然而,queuedPlayers[server]queuedPlayers.get(server)显然不起作用,因为这不是把手的工作方式,而是我想要实现的目标。

我主要是一个Python开发人员,所以JS对我来说有些新鲜,所以我不熟悉它的所有细微差别。

1 个答案:

答案 0 :(得分:2)

您需要创建一个组件并传入必要的属性才能完成此任务。

SOF's

排队的球员模板

NAKing

排队的球员js

{{#each server in servers}}
  <h2>{{server}}</h2>
  {{queued-players collection=queuedPlayers selection=server}}
{{/each}}