Ответ 1
Существует решение для этого сценария. Мы использовали бы 1) одну собственную функцию ui-router
и 2) одну настройку конфигурации. рабочий пример можно было бы увидеть здесь.
1) Собственная функция определений состояний ui-router:
url
не требуется. Состояние может быть определено без его представления в местоположении.
2) Настройка конфигурации:
-
otherwise()
для недопустимых маршрутов, этот параметр не должен быть строкой с URL-адресом по умолчанию, но может быть и функцией (cite):
путь Строка | Функция URL-адрес, к которому вы хотите перенаправить, или правило функции, которое возвращает URL-адрес. Версия функции передается двумя параметрами: $injector и $location
Решение: комбинация этих двух. Мы бы имели state
без url
и пользовательских otherwise
:
$stateProvider
.state('404', {
// no url defined
template: '<div>error</div>',
})
$urlRouterProvider.otherwise(function($injector, $location){
var state = $injector.get('$state');
state.go('404');
return $location.path();
});
Проверьте, что все в этом рабочем примере