在路径模型钩子中对ember-data实时数组进行排序

时间:2015-03-25 18:15:26

标签: ember.js ember-data

在ember route的模型钩子中,以下工作正常:

model: function () {
    return this.modelFor('foo').get('bar');
}

以ember-data为后盾,我可以删除其他地方的一些foo栏,它会自动更新(实时数组)。

现在,我想要对它进行排序(以及用户在子路由中,所以我必须在路由中执行此操作,而不是在控制器中)。

model: function () {
    return this.modelFor('foo').get('bar')
       .then(function (data) {
        return data.sortBy('baz');
    });
},

...只是第一次完成工作,因为我失去了更新。

有没有办法在线编写自动更新排序?解决这个问题的方法是什么?

2 个答案:

答案 0 :(得分:3)

根据Gaurav的回答回答我自己的问题:

 model: function () {
    return this.modelFor('foo').get('bar')
        .then(function (data) {
            return Ember.ArrayProxy.extend({
                arrangedContent: Ember.computed.sort('content', 'props'),
                props: ['baz:asc']
            }).create({
                content: data});
        });
},

答案 1 :(得分:2)

您可以为模型创建一个Ember对象,该对象具有计算属性,即已排序的数据。

model: function () {
    return this.modelFor('foo').get('bar')
       .then(function (data) {
            return Ember.Object.extend({
                arrangedData: Ember.computed.sort('model', 'props'),
                props: ['baz:asc']
            }).create({ model: data });
       });
},

Ember.Object.extend部分应该可以在某处提取,以便可以在其他路径中重用。