2015-04-14 2 views
2

У меня есть угловое приложение на странице JSP, которая имеет:

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

Так тег тела будет выглядеть, когда JSP тянет атрибут роли из сессии:

<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 таким образом.

Есть ли способ получить доступ к переменной области видимости таким образом, или есть ли другой способ сделать это?

+0

Вы не можете получить доступ к $ рамки из функции связи контроллера или директивы. – Raulucco

+0

Если речь идет о роли аутентификации, вы можете прикрепить переменную к маршруту, например [authenticate: true] (https://github.com/DaftMonk/generator-angular-fullstack/blob/master/app/templates/client/app/ account (auth)/account (js) .js), может [перенаправить] (https://github.com/DaftMonk/generator-angular-fullstack/blob/master/app/templates/client/app/app (js) .js) to/login page в app.run method – 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. Я представил несколько похожую тему о введении глобальной конфигурации переменных в приложение с угловыми углами.

 Смежные вопросы

  • Нет связанных вопросов^_^