0

我正在使用AngularJSangular_1_routerhttps ://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

4

0 回答 0