私は単純な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