ember-data: Как определить, загружено ли отношение модели async: true без запуска загрузки?
Мне нужно проверить, были ли загружены асинхронные отношения без запуска загрузки, это возможно?
6 ответов
Официального способа сделать это пока нет, но неофициально вы можете сделать
// this will be null if not loaded, and populated if it has at least started loading
if(model._relationships.yourRelationshipName) {...}
По прошествии времени вышел Ember Data 2.5. Одной из реализованных функций является ds-references
особенность.
API ссылок позволяет взаимодействовать с вашими отношениями. С его помощью можно проверить, если ваш RelationshipName
уже загружен, без вызова запроса:
model.hasMany('yourRelationshipName').value() !== null;
С ember-data 1.13 следующее будет работать для hasMany
отношения. Все еще хак, но там, кажется, нет публичного API.
var relationships = model._internalModel._relationships.initializedRelationships;
if (relationships.yourRelationshipName.manyArray.get('isLoaded')) {...}
Обновить. Все еще не в публичном API =(
Сейчас я использую это:
s._data.yourRelationshipName.get('isLoaded')
Для hasMany
Отношение непубличный API для доступа к этому в Ember Data 1.0.0-beta.12 model._relationships.tasks.manyArray.get('isLoaded')
Я добавляю это дело model._relationships.yourRelationshipName
не работал для меня
model._data.yourRelationshipName
сделал, но также будет нулевым, если не загружен, и заполнен, если он хотя бы начал загружаться