在路由模型挂钩中对 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});
});
},
在 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});
});
},