Ember排序有许多关系

Ember sorting hasMany relationship

本文关键字:关系 许多 排序 Ember      更新时间:2023-09-26

我想按升序(a-Z)对一组类别和项目进行排序。

我的HBS模板在{{each}}个类别上进行迭代,然后在该类别内的{{each}}个项目上进行迭代。

我已经尝试将sortProperties传递给每个数组控制器,但这似乎不会影响任何事情。我还尝试提取排序到数组代理(使用这里的帮助:Ember.js排序和过滤父路由中hasMany关系的子级)

有什么想法吗?

到目前为止,这是我的JSBin:http://jsbin.com/momihe/8/edit

非常感谢!

最简单的方法是对模型上的项目进行排序,然后对它们进行迭代

App.Category = DS.Model.extend({
    title: DS.attr("string"),
    createdAt: DS.attr('date', { defaultValue: new Date() }),
    items: DS.hasMany('item', { async: true }),
    sortedItems: Em.computed.sort('items', function(item1, item2){    
      return item1.get('desc').localeCompare(item2.get('desc'));
    })
});

http://jsbin.com/lojep/1/edit

下一个最简单的方法是使用项目控制器,并将排序列表放在上

模板

 {{#each model itemController='foo'}}
    <li><strong>{{title}}</strong>
      {{#each sortedItems}}
        <div>{{desc}}</div>
      {{/each}}
      <br>
    </li>
  {{/each}}

控制器

App.FooController = Em.ObjectController.extend({
  sortedItems: Em.computed.sort('items', function(item1, item2){    
    return item1.get('desc').localeCompare(item2.get('desc'));
  })
});

http://jsbin.com/lojep/2/edit