代码之家  ›  专栏  ›  技术社区  ›  Toran Billups

如何在使用ember枚举handlers中的数组时按标题显示简单的组?

  •  5
  • Toran Billups  · 技术社区  · 12 年前

    我有一个成员对象数组,它们共享一个公共属性,如“组”

    var first = {name: 'first', group: 'A'}
    var middle = {name: 'middle', group: 'B'}
    var last = {name: 'last', group: 'A'}
    
    {{#each person in controller}}
    {{person.name}}
    {{/each}}
    

    如何在每个组中仅显示一次组名作为“标题”?我在做下面的事情(为组创建一个自定义“对象”,为值创建一个“自定义数组”,但问题是我不能有一个嵌套的计算属性,所以从长远来看这似乎不太理想)

    groupby: function(content) {
      var all = Ember.A([]);
      content.map(function(apt) {
        var employee = apt.get('employee').get('name');
        var match = all.filter(function(group) {
          if (group.name === employee) {
            return group;
          }
        });
        if (match.length > 0) {
          match[0].appointments.pushObject(apt);
        }else{
          var group = Ember.Object.create({'name': employee, appointments: [apt]});
          all.pushObject(group);
        }
      });
      return all;
    }.property()
    
    1 回复  |  直到 12 年前
        1
  •  2
  •   Toran Billups    12 年前

    我最终得到了这个解决方案

    grouped_by: function() {
      var result = [];
      var content = this.get('content');
      content.forEach(function(item) {
        var name = item.get('group_name');
        var found = result.findBy('name', name);
        if(!found) {
          result.pushObject(Ember.Object.create({name: name, contents: []}));
        }
        result.findBy('name', name).get('contents').pushObject(item);
      });
      return result;
    }.property('content.@each.group_name')