ui-состояние отложенной загрузки маршрутизатора с использованием url

#javascript #angularjs #angular-ui-router

#javascript #angularjs #angular-ui-router

Вопрос:

Я пытаюсь выяснить, могу ли я использовать ui-router для делегирования настройки состояния подкомпонентам моего приложения путем реализации отложенной загрузки состояний. Хотя мне удалось заставить часть отложенной загрузки работать с использованием $state.go или эквивалента, я не могу заставить ее работать с использованием URL.

Например, при запуске my app будет настраивать только следующие 2 состояния: view1 и view2 . Когда view1 состояние загружается, оно затем настраивает свои собственные дочерние состояния: view1.profile и view1.interest . Взгляните на этот пример сайта из Gist:

http://bl.ocks.org/marcoslin/raw/b59cfa9a9a44bde04f9f/

Как вы увидите из приведенного выше примера, View1Profile это недопустимая ссылка при запуске, но если вы нажмете на нее, она загрузится view1 , а затем загрузится view1profile с результирующим URL:

http://bl.ocks.org/marcoslin/raw/b59cfa9a9a44bde04f9f/#/view1/profile

Однако, если вы нажмете на сгенерированный URL-адрес выше, app он перезагружается и больше не знает об view1profile этом и перенаправляет вас обратно home . Любая рекомендация о том, как я могу решить эту проблему? Более конкретно, могу ли я в любом случае получить URL-адрес для запуска $stateNotFound события?

Возможно, ответ содержится в части их загадочной документации о том, как: состояния отложенной загрузки. Я не смог понять, что они подразумевают под:

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

Комментарии:

1. Маркос, я скоро опубликую несколько дополнений к пользовательскому интерфейсу маршрутизатора, включая FutureStates, то есть состояния с отложенной загрузкой. Прямо сейчас в моих репозиториях github есть только моя реализация параллельных / липких состояний, но я планирую добавлять будущие состояния (в том числе через angularAMD) в течение недели. Http://GitHub.com/christopherthielen/ui-router-extras

2. @ChrisT идеальное время, так как я также делаю некоторые улучшения в angularAMD. Если вам нужна дополнительная функция в angularAMD, откройте проблему. Я добавляю a angularAMD.config , который поможет создать для установки $stateProvider по требованию.

3. Маркос, я загрузил предварительный выпуск ui-router-extras версии 0.0.1-preview. Я добавил его в bower, так что вы можете взять его оттуда или просто извлечь из моего репозитория github. Я еще не добавил тесты для ngload, потому что мне нужно выяснить, как выполнить асинхронное тестирование requirejs. Это предварительный просмотр, и поэтому требуется много кода для реорганизации и очистки. Однако я думаю, что это может вам помочь. Перейдите сюда: github.com/christopherthielen/ui-router-extras/blob/master /…

Ответ №1:

Маркос,

См. http://christopherthielen.github.io/ui-router-extras/example/future/index.html для интеграции FutureState с angularAMD.

См. http://christopherthielen.github.io/ui-router-extras/#/future / для API и обзора $futureStateProvider.