Как поймать недопустимый URL-адрес?
Я создаю простой HTML-сайт, используя угловой JS ui-маршрутизатор.
Я создал пользовательскую страницу 404 ('www.mysite / # / error / 404'), на который перенаправляется пользователь, если пользователь вводит url-адрес типа " www.mysite / # / invalidUrl'. Эта функциональность была достигнута следующим фрагментом кода:
$urlRouterProvider
.when('', '/')
.when('/home', '/')
.otherwise('/error/404');
и следующий фрагмент:
$stateProvider.state('404', {
parent: 'app',
url: '^/error/404',
views: {
'errorContent@main': {
controller: 'error404Controller',
templateUrl: 'js/general/templates/error404.html'
}
}
});
Я пытаюсь захватить недопустимый URL-адрес, запрошенный Пользователем для отображения пользователю, как под.
Запрошенный URL-адрес не найденЗапрос: www.mysite.com/#/invalidUrl
Я попытался прослушать событие "$stateNotFound", которое, похоже, срабатывает только при запросе определенного недопустимого состояния. Я также попытался прослушать события "$stateChangeStart", "$locationChangeStart " и "$locationChangeSuccess", но не смог найти способ достичь этой функциональности.
это возможно? Пожалуйста, поделитесь своими мыслями - спасибо
1 ответов
потрясающе! Спасибо Келер Радим. Не знаю, как я на него не приземлился!--6-->нить когда я искал, но это помогло мне получить ответ.
Я изменил ответ в этом потоке, чтобы соответствовать моему сценарию, который я оставлю ниже ссылки на любые другие пользователи.
$stateProvider.state('404', {
parent: 'app',
url: '^/error/404',
views: {
'errorContent@main': {
controller: 'error404Controller',
templateUrl: 'js/general/templates/error404.html'
}
}
});
$urlRouterProvider
.when('', '/')
.when('/home', '/')
.otherwise(function ($injector, $location) {
var state = $injector.get('$state');
state.go('404', { url: $location.path() }, { location: true });
});
таким образом, волшебное изменение было функцией, определенной для опции "в противном случае". Я не изменил URL-адрес состояния "ошибка". Вместо этого я использовал "государство".перейти к активации государство '404' и прошел путь в качестве параметра состояния.
задание location=true
приведет вас к URL-адресу состояния, и location=false
не будет. В любом случае, вы предпочитаете недопустимый URL-адрес теперь можно легко получить доступ.