как отобразить визуализацию загрузки при ожидании загрузки связанных моделей с помощью emberjs

#ember.js #ember-data

#ember.js #ember-data

Вопрос:

Каков наилучший способ подключиться к hasMany обещанию загрузки отношений в ember data? Это не основная модель, поэтому маршрут загрузки не имеет значения. У меня уже есть загруженная основная модель, Project и мой шаблон отображает связанную с ней RequestMatchers . Это RequestMatchers я хотел бы установить свойство для ProjectController или что-то еще для отображения визуальной очереди загрузки. Это то, что у меня есть в настоящее время.

/models/project.js

 import DS from 'ember-data';

export default DS.Model.extend({
    title: DS.attr('string'),
    private: DS.attr('boolean'),
    requestMatchers: DS.hasMany('request-matcher', {async: true}),
    responses: DS.hasMany('response', {async: true})
});
  

/templates/project.hbs

 {{#each matcher in requestMatchers}}
 //render requestMatchers
{{/each}}
  

Я хотел бы сделать что-то подобное, но я не знаю, как подключиться к этому асинхронному запросу для RequestMatchers обещания.

 {{#if requestMatchersLoading}}
    Loading request matchers...
{{/if}}

{{#each matcher in requestMatchers}}
 //render requestMatchers
{{/each}}
  

Ответ №1:

Не зависит от isFulfilled , поскольку это становится правдой только в том случае, если загрузка завершается успешно. Используйте isPending вместо этого.

Вы также можете проверить isRejected и добавить кнопку перезагрузки, если это необходимо.

 {{#if isFulfilled}}
  Done loading.
{{else}}
  {{#if isPending}}
    Loading...
  {{else}}
    Restart!
  {{/if}}
{{/if}}
  

Ответ №2:

Использовать isFulfilled флаг

 {{#if requestMatchers.isFulfilled}}
  {{#each matcher in requestMatchers}}
     //render requestMatchers
  {{/each}}
{{else}}
   Loading request matchers...
{{/if}}