У меня есть несколько моделей, установленных с асинхронными отношениями, например:Эмбер-данные вычисляются свойства на отношениях асинхронных
User = DS.Model({
postsApproved: DS.hasMany('post', {async: true, inverse: 'approved'})
})
Post = DS.Model({
approver: DS.belongsTo('user', {async: true, inverse: 'postsApproved'})
})
В контроллере, у меня есть собственность на посте, isApproved
, который просто проверяет, если approver
установлен. Я ожидаю, что это должно работать:
isApproved: function() {
return !Ember.isNone(this.get('approver'));
}
Но что всегда возвращает истину, и если я проверить данные, которые я вижу, что это происходит потому, что this.get('approver')
возвращает обещание. Это работает:
isApproved: function() {
return !Ember.isNone(this.get('approver.content'));
}
Но использование content
мне кажется, что возиться с внутренностями немного слишком много. Правильно ли это, или я что-то упускаю?
Спасибо за совет, но это не похоже, чтобы остановить уголек возвращения обещания, а не значение, даже если обещание выполнено. Проверяя это, я вижу, что, когда выполняется 'isApproved', обещание выполняется, но' this.get ('approver') 'возвращает обещание, которое имеет' {content: null, isFulfilled: true} ', но которое само не является "null". – aquavitae
попробуйте добавить 'approver: null' в определение контроллера (или, возможно, другое имя, чтобы отличать от асинхронного утверждения на модели) – Asgaroth