在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');
});
},
...只是第一次完成工作,因为我失去了更新。
有没有办法在线编写自动更新排序?解决这个问题的方法是什么?
答案 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部分应该可以在某处提取,以便可以在其他路径中重用。