我有一个有很多孩子的表格,我想按字母顺序排序。
为此,我在计算属性上使用了Array Proxy和SortableMixin,我遇到的问题是当一个新项添加到obeserved属性时,集合再次自行排序。
我想要的是让收集在第一次加载时排序,然后再排序。
这里是当前设置的一个jsbin示例,如果单击添加新项目将被添加到集合中,只要您开始输入新项目的输入,该集合将重新排序这不太理想。
答案 0 :(得分:1)
只需在模型上对其进行排序。
App.IndexRoute = Ember.Route.extend({
model: function(){
return Ember.Object.create({
colours:[Ember.Object.create({colour:'red'}), Ember.Object.create({colour:'yello'}), Ember.Object.create({colour:'blue'}), Ember.Object.create({colour:'green'}), Ember.Object.create({colour:'orange'})]
});
},
afterModel: function(model, transition){
// this will force the collection to populate before
// setupController (really applies to async relationship, but whatever)
// returned promises will block until resolved.
return model.get('colours');
},
setupController: function(controller, model){
var colours = model.get('colours'),
sort = colours.toArray().sortBy('colour');
colours.clear();
colours.pushObjects(sort);
this._super(controller, model);
}
});