Ember排序有很多关系

时间:2014-09-21 22:13:42

标签: javascript sorting ember.js

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

我的HBS模板遍历{{each}}类别,然后遍历该类别中的{{each}}项目。

我试图将sortProperties传递给每个数组控制器,但这似乎不会影响任何事情。我还尝试将排序提取到数组代理(使用此处的帮助:Ember.js sorting and filtering children of a hasMany relationship in parent route

任何想法如何从这里前进?

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

非常感谢!

1 个答案:

答案 0 :(得分:5)

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

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