仅在第一次加载时对Ember Array进行排序

时间:2015-05-27 01:57:29

标签: ember.js

我有一个有很多孩子的表格,我想按字母顺序排序。

为此,我在计算属性上使用了Array Proxy和SortableMixin,我遇到的问题是当一个新项添加到obeserved属性时,集合再次自行排序。

我想要的是让收集在第一次加载时排序,然后再排序。

这里是当前设置的一个jsbin示例,如果单击添加新项目将被添加到集合中,只要您开始输入新项目的输入,该集合将重新排序这不太理想。

http://emberjs.jsbin.com/sedexequni/2/edit

1 个答案:

答案 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);
  }
});

http://emberjs.jsbin.com/kosanixame/1/edit