AngularJS:访问$ routeProvider中的范围变量

时间:2015-04-14 14:38:26

标签: javascript angularjs angularjs-scope ngroute ng-init

我在JSP页面上有一个角度应用程序:

ng-init="role='<%=String.valueOf(session.getAttribute("role"))%>'"

当JSP从会话中提取角色属性时,body标签将如下所示:

<body ng-app="appName" ng-init="role='roleName'">

我想访问role中的$routeProvider变量。

我尝试将$scope传递给app.config函数:

app.config(['$routeProvider', '$scope',
    function ($routeProvider, $scope) {
        $routeProvider
        .when('somePath' {
            ...
        })
        .when('someOtherPath' {
            ...
        })
        .otherwise({
            redirectTo: $scope.role == 'goodRole' ? 'somePath' : 'someOtherPath'
        });
}]);

但是,您似乎无法以$scope方式传递。

有没有办法以这种方式访问​​范围变量,还是有其他方法可以实现这一目标?

2 个答案:

答案 0 :(得分:1)

不,这是不可能的,因为configuration phase(服务是创建和配置的)在运行阶段之前发生(控制器运行,渲染指令,范围链接)。< / p>

在您的情况下,您可能希望创建全局变量并从配置块访问它。在这种情况下,你真的没有很多选择。

同时检查this answer我提供了有关将全局变量配置注入Angular应用程序的类似主题。

答案 1 :(得分:1)

不,这是不可能的。如何将其设置为data-role属性并从document.body.dataset.role获取

data-role="<%=String.valueOf(session.getAttribute("role"))%>"