Получение состояния из строки 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;