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 сделал, но также будет нулевым, если не загружен, и заполнен, если он хотя бы начал загружаться

Другие вопросы по тегам