2016-07-05 2 views
1

Я создал SPA с угловой v1.5.6 и угловой-ui-router v1.0.0alpha0; Вот мой Working Plunker. в этом SPA У меня есть 3 страницы: целевая страница i.e "/", / и /О нас. Главная страница необходима для входа в систему; после входа в систему мы сохраняем учетные данные в локальном хранилище, чтобы при обновлении страницы мы не теряли страницу. все работает нормально, но теперь у меня есть вопрос о /Главная страницаНе удается перезагрузить такое же состояние на странице обновления

когда я обновить/Home страницу , это дает ниже ошибки для свойства, которая определяется в данных атрибут .state и страница не нагружает

angular.min.js:117 TypeError: Cannot read property 'authorizedRoles' of undefined

маршрута определяется ниже способом (только соответствующий код показан ниже)

$stateProvider 
     .state("home", { 
      url: '/home', 
      templateUrl: './home/home.html', 
      controller: 'HomeController', 
      requiresAuth: true, 
      data : { pageTitle : 'Home', authorizedRoles: [USER_ROLES.admin, USER_ROLES.editor] } 
     }) 

и используя ниже код в *.config*, которые являются причиной ошибки

$transitionsProvider.onBefore({to: function(state) { return state.requiresAuth; } }, 
     function($transition$, $state, AuthService) { 
      console.log(arguments); 
      var from = $transition$.to().name; 
      console.log(from); 
      if(!AuthService.isAuthenticated()) { 
       return $state.go("login", {referral : from}); 
      } else { 
       console.log('I m logged in'); 
       var roles = $state.current.data.authorizedRoles; 
       if(AuthService.isAuthorized(roles)) { 
        console.log('Authorized'); 
       } 
      } 
    }); 

Примечание: писать какие-либо полномочия в этой plunker при запросе авторизации.

после обновления страницы $ state.current пуст; как справиться с этими ситуациями?

ответ

0

решена с этим help from github

var roles = $state.current.data.authorizedRoles;

будет

var roles = $transition$.to().data.authorizedRoles;

0

Вы пытались с dev tool?

Установите точку останова в app.js:76 и нажмите Home, вы увидите, что ваше текущее состояние является базовым, у которого нет data.

+0

Да. Я считаю, что это кажется правильным, но почему это происходит, когда мы обновляем одну и ту же домашнюю страницу –

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