Javascript AngularJS用户界面路由器到一个状态,但使用不同的URL
在我的AngularJS应用程序中,我希望捕获错误并将用户发送到404状态,如下所示:Javascript AngularJS用户界面路由器到一个状态,但使用不同的URL,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,在我的AngularJS应用程序中,我希望捕获错误并将用户发送到404状态,如下所示: $rootScope.$on('$stateNotFound', function(event, unfoundState, fromState, fromParams){ //console.log(unfoundState.to); //console.log(unfoundState.toParams); //console.log(unfoundState.options)
$rootScope.$on('$stateNotFound', function(event, unfoundState, fromState, fromParams){
//console.log(unfoundState.to);
//console.log(unfoundState.toParams);
//console.log(unfoundState.options);
$state.go('404');
});
这适用于用户单击应用程序中的错误链接(例如,没有状态,因为有状态但没有内容的链接通过其他方法处理)等
代码加载404状态罚款:
.state('404',
{
views: {
'body': {
templateUrl: 'partials/404.html',
}
}
});
但我想做的是将URL更改为他们试图访问的状态,因此基本上加载404状态,但使用错误的URL(因为404在服务器环境中工作)
我已经调查过了:
history.replaceState(null, null, unfoundState.to);
$state.go('404');
但这会导致应用程序中出现重大错误,并更改URL,但不会更改状态
如何执行此操作?尝试此操作以捕获与以前任何路由都不匹配的所有URL:
.state("404", {
url: "*path", // will catch all URLs
templateUrl: 'partials/404.html'
})
根据调查,我认为你可以做到:
$state.go('404',{},{location:false});
注意:我正在创建一个plunkr以进行验证,但我现在没有时间完全完成它我还没有尝试过。我不确定
$state.transitiono('404',{},{location:false})代码>工作。