【发布时间】:2017-02-13 19:05:55
【问题描述】:
我有一个简单的belongsTo 模型关系:
合同.js:
export default DS.Model.extend({
object : DS.belongsTo('object'),
....
})
object.js:
export default DS.Model.extend({
street : DS.attr('string'),
zip : DS.attr('string'),
city : DS.attr('string'),
...
})
在我的控制器中,对于拥有许多 contracts 的实体,我想按关联的 object 的街道名称进行排序,但不知何故
export default Ember.Controller.extend({
sortOrder: ['object.street'],
sortedObjects: Ember.computed.sort('model.contracts', 'sortOrder')
...
});
没用。
使用自定义比较器函数
function(a, b){
if (a.street > b.street) {
return 1;
} else if (a.street < b.street) {
return -1;
}
}
我发现a 和b 是Promises,但不知何故我不知道如何通过嵌套属性(对象的街道)对它们进行排序
编辑
再澄清一下代码:
contracts : Ember.computed.alias('model.contracts'),
street: Ember.computed.alias('realty.street'),
sortOrder: ['realty.street'],
sortedOwnedRealties: Ember.computed.sort('contracts.@each.street', function (a, b) {
console.log(Ember.get(a, 'id'));
console.log(Ember.get(a, 'street'));
//return 1;
})
该函数将undefined 打印到street 的控制台,但正确的是id。
为了清楚起见,我已将 object 重命名为 realty。
【问题讨论】:
标签: sorting ember.js computed-properties