Как предварительно загрузить угловой маршрут и переключаться только при успешной загрузке маршрута? - PullRequest
0 голосов
/ 06 января 2019

В настоящее время я разрабатываю административную панель управления для моего места работы с использованием шаблона BlurAdmin . Хотя этот шаблон содержит много замечательных функций и отличных функциональных возможностей, я обнаружил, что эта панель управления была не совсем оптимизирована для моего случая использования. Панель инструментов, которую я разрабатываю, полностью основана на RESTful API, построенном отдельно одним из моих коллег. Каждая страница загружает свои данные через этот API с помощью AJAX и обнаруживает, что большую часть времени страница отображается до завершения API. Это означает, что вещи просто время от времени появляются, когда звонки завершены. Чтобы сделать пользовательский интерфейс более плавным, я начал работать над решением для этого.

Текущее решение
Во время загрузки маршрута переменная rootScope $isLoading установлена ​​в значение true, что отображает накладываемое изображение загрузки, растянутое по странице. Чтобы определить завершение, я наблюдаю $http.pendingRequests.length до тех пор, пока оно не станет равным 0, что говорит мне об успешной загрузке страницы (основываясь исключительно на вызовах http).

Желаемое решение
Пока загружается маршрут, я бы хотел, чтобы страница не менялась, а вместо этого использовала загрузчик верхней панели и только при загрузке страницы, если маршруты изменились.

В настоящее время маршрутизация выполняется BlurAdmin с использованием модуля ui-router , и представление всегда мгновенно отображается директивой ui-view.

Мой вопрос: как мне предварительно загрузить угловой маршрут в скрытый вид во время его построения, и только после того, как я обнаружу, что все вызовы API завершены на этом новом маршруте, должен ли скрытый вид переключиться на видимый вид и старый видимый вид будет удален?

1 Ответ

0 голосов
/ 07 января 2019

Вы можете сделать это, используя resol в вашей декларации состояния. Основная идея заключается в том, чтобы вызывать ваш API из ваших функций разрешения соответствующих объявлений состояний. Если вы возвращаете обещания из этих функций, состояние не будет введено, пока все обещания не будут разрешены. Значения будут привязаны к вашему компоненту.

Чтобы показать спиннер / загрузочную полосу на переходах между состояниями, вы можете зарегистрировать Переходный крюк для 2 событий: onStart и onFinish. В вашем onStart хуке устанавливается состояние службы. Допустим, isTransitioning = true;. В вашем onFinish хуке установите значение false. Ваш компонент счетчика может затем наблюдать это состояние и показывать себя, когда это необходимо.

...