2014-10-16 1 views
1

Я пытаюсь обновить приложение от Ember Data 1.0.0-beta.9 до 1.0.0-beta.11, и совсем немного изменилось. В частности, у меня возникают проблемы с выяснением, действительно ли экземпляр модели имеет связанный экземпляр модели.Ember Data 1.0.0-beta.11: Как узнать, является ли асинхронная связь пустой?

A = DS.Model.extend({ 
    b: belongsTo('b', { async: true }), 
}); 

B = DS.Model.extend({ 
    a: belongsTo('a', { async: true }), 
}); 

В Ember данных 1.0.0-beta.9, a.get('b') просто вернет null, если не связана модель не найдена. Это позволяет легко фильтровать макросы вычисляемых свойств.

В Ember Data 1.0.0-beta.11, a.get('b') возвращается обещание, что делает его гораздо сложнее использовать в макросах вычисляемых свойств. Если обещание будет выполнено, а содержание обещания - null, нет соответствующей записи. Но я не знаю, можно ли выполнить эту проверку внутри Ember.computed.filter.

У меня есть довольно много Ember.computed.filter s зондирования довольно много Ember.isEmpty(a.get('b')), так что я ищу хороший способ проверить, является ли асинхронная связь объекта пустой. Я пропустил что-то очевидное, как встроенный вызов Ember Data api? Как бы вы реализовали такую ​​проверку, если вам нужно фильтровать по наличию/отсутствию связанных свойств?

ответ

1

Ну, чтобы ответить на мой собственный вопрос, я обошел это, отфильтровывая для Ember.isEmpty(a.get('b.id')), b/c. Обычно я занимаюсь сохраненными записями и мог отправлять по краям. Иногда это так просто ...: D

0

, если соответствующая запись только что создала и isNew является true, проверка id свойства будет также возвращать null. В моем случае это приводит к неожиданным результатам. Как мне удалось преодолеть это, проверив вместо этого свойство content. Для вновь созданной записи это вернет класс модели и null, если связанный объект пуст.