Получение состояния из строки URL с помощью Angular UI Router
Я использую государственную маршрутизацию (Angular UI Router v0.2.7) в проекте и ищу способ получить текущее состояние (имя) из заданной строки URL.
Что-то вроде:
$state.get([urlString]) returns stateName:String or state:Object
Мне нужен этот метод, чтобы проверить, существует ли какое-либо состояние для заданного URL-адреса, потому что не все URL-адреса отображаются в состояние в моем проекте. Используя Play Framework в качестве бэкэнд, некоторые URL-адреса (например, форма входа) не отображаются в состояние, потому что они используют разные шаблоны, а затем Angular (основную) часть моего приложения.
Для тех страниц "не- Angular" (т.е. Не охваченных состоянием) я бы сделал перезагрузку. Чтобы определить URL-адреса, не охватываемые государством, мне нужен метод, упомянутый выше. Планируется сделать это следующим образом:
$rootScope.$watch(function() { return $location.path(); }, function(newUrl, oldUrl) {
if(newUrl !== oldUrl) {
if (!$state.get(newUrl)) {
$window.location.assign(newValue);
}
}
}
Уже проверен document, но такого метода нет.
Любые идеи?
Ответы
Ответ 1
Все или ничего. Если вы планируете использовать ui-router, убедитесь, что все ваши URL-адреса разрешены к состоянию. Если состояние не существует, оно переходит в состояние otherwise
. Возможно наличие необязательных параметров.
Альтернативой является использование перенаправления .htaccess
, чтобы поймать URL-адрес и перенаправить вас до того, как он попадет на u-router.
Предоставьте более подробную информацию, и мы можем видеть, что лучший вариант.
Ответ 2
Попробуйте использовать это, чтобы получить текущее имя sate.
var stateName = $state.current.name;