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

Sorting ember-data live array in route model hooks

在 ember 路线的模型挂钩中,以下工作正常:

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');
    });
},

... 只在第一次完成这项工作,因为我正在丢失更新。

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

您可以为您的模型创建一个 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 部分提取到某处,以便在其他路线中重复使用。

根据 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});
        });
},