我正在使用AngularJS
和angular_1_router
:https ://docs.angularjs.org/api/ngComponentRouter 。
我想在路由之间导航时检查是否允许下一个路由,如果不允许,用户将被重定向到 403 页面。
在 AngularJs API 中:
$routeChangeSuccess
在路由更改成功发生后广播。解析依赖项现在在 current.locals 属性中可用。
所以我做了如下:
$rootScope.$on('$routeChangeSuccess', function (event, current, previous) {
$rootRouter.recognize($rootRouter._currentInstruction.urlPath).then(function (path) {
if (path !== null) {
_handleForbiddenRouting(path, path.urlPath).then(function(result){
if(result !== null) {
$rootRouter.navigate([result]);
}
});
}
}, function (error) {
loggerFactory.error('An error occured during navigation.', error);
});
});
该_handleForbiddenRouting
函数将检查我正在导航的路线是否允许,如果不是,用户将被重定向到其中的路线名称result
(即 403 页面)。
在某些情况下,有一些视图没有解析(视图没有渲染),因为在调用过程中出现了错误$routerOnActivate
(例如 XHR 错误),在这种情况下,angular_1_router
没有广播事件$routeChangeSuccess
,因此函数_handleForbiddenRouting
没有执行。
我该如何解决这个问题?
编辑:
请不要在$routeProvider
和之间混用ngComponentRouter
。