5

我想查看按部门分组的一些联系信息(姓名、电子邮件...),但我无法使用 Handlebars 实现。

  • X部

    • 联系 x1 信息
    • 联系 x2 信息
    • ...
  • Y部

    • 联系 y1 信息
    • 联系y2信息
    • ...

我不知道我提前有多少部门。因此,在我的控制器中,我尝试在 Ember.Map 中加载信息,其中部门是其键,带有联系人信息的数组是每个部门的值。它是这样的:

map = Ember.Map.create();
// Load data from server into map
// m = {'Department X': [{name:'x1','email':'emailx1',...},{...}], 'Department Y':[....], ...}

{{#each department in map}}
    {{department}}
    {{#each contact in map.keys}}
        {{contact.name}} | {{contact.email}}
    {{#each}}
{{#each}}

抛出一个错误,提示“EmberCollectionView 的内容必须实现 Ember.Array。您传递了 [object Object]”。是否可以使用嵌套数据来完成任务?欢迎任何帮助。谢谢。

4

1 回答 1

5

像这样创建一个部门类怎么样:

App.Department = Ember.Object.extend({
  name: null
  contacts: null // will be an array of App.Contact
})

和这样的联系人类:

App.Contact = Ember.Object.extend({
  name: null,
  email: null,
})

加载数据时,您可以简单地构建一个部门数组

App.departments = [];

// parse the arriving json and populate the departments array
App.departments.pushObject(
   App.Department.create(
        {name: dptLoadedName, contacts: [App.Contact.create({...})]}
   )
)

因此,在您的模板中,您可以执行以下操作:

{{#each department in App.departments}}
   {{department.name}}
   {{#each contact in department.contacts}}
     {{contact.name}} | {{contact.email}}
   {{#each}}
{{#each}}
于 2012-10-09T15:10:29.217 回答