【问题标题】:Ember.js: How to view data from Ember.MapEmber.js:如何从 Ember.Map 查看数据
【发布时间】:2012-09-29 22:43:42
【问题描述】:

我想查看按部门分组的一些联系信息(姓名、电子邮件...),但我无法通过 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]”。是否可以使用嵌套数据来完成任务?欢迎任何帮助。谢谢。

【问题讨论】:

    标签: ember.js handlebars.js nested-loops


    【解决方案1】:

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

    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}}
    

    【讨论】:

    • 完美!在等待答案时,我正在尝试这样做,并且效果很好。我试图使用 Ember.Map,因为我来自 Java 世界,我曾经在我的模板中使用 Map 来完成这样的任务。谢谢一百万
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2011-11-08
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多