2014-10-21 4 views
0

Я использую угловой с ui-router и сателлитом, чтобы проверить, что пользователь погоды зарегистрирован или нет. Вот мой пример кода:Изменение страницы в stateProvider не работает

var App = angular.module('myApp', ['satellizer', 'ui.router']); 
    App.config(function ($stateProvider, $urlRouterProvider) { 
     $urlRouterProvider.otherwise('/app/blank'); 
     $stateProvider 
       .state('app', { 
        url: '/app', 
        abstract: true, 
        template: 'View<br><div ui-view=""></div>', 
        resolve: { 
         authorize: ['authService', function (authService) { 
          return authService.isLoggedin(); 
         }] 
        } 
       }) 
       .state('app.blank', { 
        url: '/blank', 
        title: 'Blank', 
        template: '<div>blank</div>' 
       }) 
       .state('page', { 
        url: '/page', 
        template: 'Page<br><div ui-view=""></div>' 
       }) 
       .state('page.login', { 
        url: '/login', 
        title: "Login", 
        template: 'Login' 
       }); 
    }); 
    App.factory('authService', function ($rootScope, $state, $auth) { 
       return { 
        isLoggedin: function() { 
         if (!$auth.isAuthenticated()) { 
          console.log('not logged in'); 
          $state.go('page/login'); 
          return true; 
         } 
        } 
       }; 
      } 
    ); 

В $ stateProvider я использую решимость проверить погоду пользователь вошел в систему или нет. Если скрипт не должен перейти на страницу состояния/входа, но это не так - он просто перестает работать. Как исправить этот код?

+0

Если я использую '$ location.path ("страница/вход")' в INSEAD в '$ state.go (" страница. login ")' работает, но почему бы не использовать '$ state.go', который используется ui-router ?? – piernik

+0

Вы пробовали $ state.go ('page.login')? – elmalto

+0

Да - без перезагрузки – piernik

ответ

2

Использование $state.go('page.login'); вместо $state.go('page/login'); (Обратите внимание на точку!)

Вы должны изменить к имени государства, а не к URL государства.

0

Если состояние $ не работает. Проверьте $ инжекторной работы и изменить $ состояния до $ инжектора, как это:

App.factory('authService', function ($rootScope, $injector, $auth) { 
      return { 
       isLoggedin: function() { 
        if (!$auth.isAuthenticated()) { 
         console.log('not logged in'); 
         $injector.get('$state').go('page.login'); 
         return true; 
        } 
       } 

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

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