我正在使用 AngularJS 和 ui-router,以下是能够捕获404错误并加载404模板的代码:
它保持URL不变,而不是重定向,但显示404模板:
$urlRouterProvider.otherwise(function($injector, $location){
$injector.invoke(['$state', function($state) {
$state.go('404');
}]);
});
它保持URL不变,而不是重定向,但显示404模板:
.state('404',
{
views: {
'body': {
templateUrl: 'partials/404.html',
}
}
});
通常情况下,使用如下代码重定向到根状态: $urlRouterProvider.otherwise('/');
然而,当关闭HTML5模式并访问根URL时,例如http://www.domain.com/app/
,它会加载404状态而不是重定向到http://www.domain.com/app/#/
如何保留上述404状态代码,但在访问初始页面时将其重定向到Hashbang?因此,仅在请求不是主页时才加载404状态?
我无法使用$stateNotFound
或$stateChangeSuccess
,需要一种方法来检查是否是主页请求,并在配置设置本身内切换/
和state.404
之间的方式。