2015-04-14 104 views
2

我有了一个JSP页面上的角应用:

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

所以body标签看起来像这样当JSP拉会话中的角色属性:

<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那条路上经过。

有没有办法以这种方式访问​​范围变量,或者有另一种方式来实现这一点?

+0

您无法访问$范围之控制器或向链路的功能。 – Raulucco

+0

如果是关于认证角色,可以将变量附加到像[authenticate:true]这样的路由(https://github.com/DaftMonk/generator-angular-fullstack/blob/master/app/templates/client/app/帐户(身份验证)/帐户(js).js),可[重定向](https://github.com/DaftMonk/generator-angular-fullstack/blob/master/app/templates/client/app/app(js) .js)到app.run方法中的登录页面 – YOU

回答

1

不是,这是不可能的。你怎么样把它设置为一个data-role属性和document.body.dataset.role得到它:

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

+0

这对我有效,但我很好奇,如果这是正确方式来做到这一点。 –

+0

似乎目前唯一可能。 –

+0

@AndrewMairose我喜欢你 :) – gerl

1

不,你不可能像你在尝试,因为configuration phase(服务创建和配置)发生之前运行阶段(控制器运行,指令呈现,范围链接)。

你的情况你可能想要创建全局变量并从配置块访问它。在这种情况下,你确实没有太多选择。

另请查看this answer我提供了有关将全局变量配置注入Angular应用程序的相似主题。