我想按升序(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
非常感谢!
答案 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'));
})
});
下一个最简单的方法是使用项目控制器,并将排序列表放在那里
{{#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'));
})
});