Лучший способ показать сообщение загрузчика во время загрузки model.list

Я создал простое приложение MVC с canjs для списка пользователей, используя can.Model.List. Поскольку мой запрос может занять более 5 секунд, я бы добавил в представление небольшое сообщение / изображение предварительной загрузки во время загрузки.

т.е. я бы что-то подобное (я использую усы)

var users = new Users.List({});
element.html(can.view('myView', users);

с этим шаблоном:

{{#if loading}}
   <p>Loading, please wait...</p>
{{else}}
   <ul>
      {{#each this}}
         <li>User {{ name }} {{ surname }}</li>
      {{/each}}
   </ul>
{{/if}}
</ul>

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

Есть идеи?

1 ответ

Решение

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

var users = new Users.List();
users.replace(Users.findAll());
element.html(can.view('myView', { users: users });

Это даже позволит вам показать сообщения об ошибках загрузки:

{{#if users.isPending}}
   <p>Loading, please wait...</p>
{{else}}
  {{#if users.isResolved}}
   <ul>
      {{#each users}}
         <li>User {{ name }} {{ surname }}</li>
      {{/each}}
   </ul>
   {{else}}
   There was an error loading the user list.
   {{/if}}
{{/if}}
</ul>
Другие вопросы по тегам