2016-02-24 3 views
3

Я хочу отобразить шаблон загрузки в Ember перед загрузкой следующего шаблона. Прямо сейчас у меня есть шаблон загрузки для маршрута приложения, и это отлично работает, если пользователь переходит непосредственно к URL-адресу. Тем не менее, я хочу, чтобы тот же шаблон отображался, если пользователь нажимает на link-to на страницу с другой страницы приложения. Как это может быть сделано?Как отобразить шаблон загрузки в Ember во время загрузки модели?

Планирование afterRender не работает, потому что страница еще не загружена (сейчас она просто сидит на предыдущей странице в течение нескольких секунд при загрузке следующей страницы; использование afterRender вызывает одно и то же, однако один раз он загружает вас, чтобы получить краткий обзор загрузочного div до того, как он исчезнет: явно не предполагаемое поведение).

Как я могу показать шаблон загрузки?

Сокращение времени загрузки не является вариантом, мы делаем довольно тяжелые вычисления.

EDIT: Я действительно считаю, что мой вопрос отличается от того, который был предложен как дубликат, потому что я хочу иметь одинаковый шаблон загрузки для всех маршрутов, которые структура шаблона загрузки по умолчанию не предоставляет. «Наследственное» решение LoadingRoute больше не может работать, поскольку представления устарели с использованием новейшей версии Ember.

+1

Возможного дубликатом [Emberjs : как отображать загрузочные счетчики и уведомления о работе модели] (http://stackoverflow.com/questions/20687215/emberjs-how-to-display-loading-spinner-and-notification-messages-on-model-oper) –

ответ

6

Из моего понимания, Ember.js loading substates это именно то, что вам нужно, особенно в этой части руководства:

приложение/router.js

Router.map(function() { 
    this.route('foo', function() { 
    this.route('bar', function() { 
     this.route('slow-model'); 
    }); 
    }); 
}); 

Ember будет чередовать пытается найти routeName загрузкой или загрузка шаблона в иерархии, начиная с первого шаблона:

  • foo.bar.slow-модель заряжание

  • foo.bar.loading или foo.bar загрузка

  • foo.loading или Foo загрузка

  • loading или application-loading (который вы уже внедрили)

Предлагаю удалить объект afterRender(), поскольку я не знаю, может ли он вмешиваться в запуск событий загрузки. Если гиды не предлагают решение, можете ли вы опубликовать jsfiddle? Ember.js может получить привередлив в зависимости от того, как вы реализуете розетки ...

Вы можете раскошелиться в example, который я создал для другого вопроса, чтобы быстро настроить ваш JSFiddle работать с ember.js

+0

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

+0

Итак, я действительно реализовал маршрут загрузки на уровне приложений, но я наблюдаю, что он не отображается между маршрутами в приложении, только при полном обновлении. Я полагаю, что шаблон не «пузырится» должным образом и отображается только при загрузке на уровне приложений. – Aristides

+1

Этот вопрос также пытается выяснить, почему он не пузырится (https://stackoverflow.com/questions/34889107/ember-loading-template-works-only-on-page-refresh) – Deovandski

Смежные вопросы