У меня есть простые отношения модели 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
и b
это Promises
, но как-то не вижу, как их отсортировать по вложенному атрибуту (улице объекта)
Редактировать
Чтобы немного уточнить код:
contracts : Ember.computed.alias('model.contracts'),
street: Ember.computed.alias('realty.street'),
sortOrder: ['realty.street'],
sortedOwnedRealties: Ember.computed.sort('[email protected]', function (a, b) {
console.log(Ember.get(a, 'id'));
console.log(Ember.get(a, 'street'));
//return 1;
})
Эта функция выводит на консоль undefined
для street
, но правильный id
.
Я переименовал object
в realty
для ясности.