2

我在 JSP 页面上有一个 Angular 应用程序,它具有:

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

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

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

我想role$routeProvider.

我尝试通过传递$scopeapp.config函数来这样做:

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

但是,您似乎无法以$scope这种方式通过。

有没有办法以这种方式访问​​范围变量,还是有另一种方法来完成这个?

4

2 回答 2

1

不,这不可能像您尝试的那样,因为配置阶段(服务被创建和配置)发生运行阶段(控制器运行、指令呈现、范围链接)之前。

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

还要检查我提供的关于将全局变量配置注入 Angular 应用程序的类似主题的答案。

于 2015-04-14T14:42:53.917 回答
1

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

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

于 2015-04-14T14:45:56.173 回答