Как мне выполнить backgroundReload в несколько этапов в Ember? - PullRequest
0 голосов
/ 05 сентября 2018

Я получаю список записей, скажем posts, без связей. Когда я выбираю один пост, я хотел бы немедленно увидеть этот пост и загрузить фоновые отношения.

Это возможно так:

this.store.findRecord('posts', params.id, {
    reload: false,
    backgroundReload: true,

Как только отношения загружены, представление автоматически обновляется.

Однако некоторые отношения сложны и требуют времени для загрузки. Они становятся актуальными после прокрутки. Существует одно hasMany отношение, которое является важным для начального просмотра страницы. И их отношения также важны, но я предпочитаю откладывать их тоже.

Итак, можно ли выполнить следующие пункты по порядку при нажатии на одно сообщение?

  • Открыть сообщение прямо из кэша (reload: false)
  • Фоновая перезагрузка, включающая одно отношение , исключая отношения отношения
    • Отношения фона и перезагрузки , включая отношения отношения
  • Фоновая перезагрузка, включая все отношения

например. после того, как начальный шаблон нарисован с использованием кэшированной модели, произойдет еще 3 обновления.

1 Ответ

0 голосов
/ 08 сентября 2018

Вы можете использовать метод reload(), который доступен для DS.Model и DS.ManyArray. Он возвращает Обещание, которое устанавливается после перезагрузки записи. Вы можете использовать это обещание, чтобы при необходимости перезагружать цепочку.

Следует избегать перезагрузки еще не загруженной записи, используя свойство isLoaded, доступное как в DS.Model, так и в DS.ManyArray.

Вы можете использовать eachRelationship метод из DS.Model для итерации по всем отношениям.

...