我有一个简单的belongsTo
模型关系:
合同.js:
export default DS.Model.extend({
object : DS.belongsTo('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
and b
are 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
。