#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.