角度分发应用程序无法正常工作

时间:2017-03-29 12:51:14

标签: angularjs angular-ui-router rootscope

我已经使用angular开发了一个应用程序,但是当我使用grunt构建分发应用程序时,我的应用程序有一种奇怪的行为。 例如:

console.log("START");   
AuthService.refresh(LoopBackAuth.accessTokenId).then(function() {
    console.log("USER LOADED");
    $state.go('main.documents');
});

在main.documents中我有:

console.log("DOCUMENTS");

所以流程应该是(我在生产文件中的流程):

log-->START
log-->USER LOADED
log-->DOCUMENTS

但是我在生产文件中获得的流程如下:

log-->START
log-->DOCUMENTS
log-->USER LOADED

并在我的文档中查看我的$ rootScope,在那里我保存了我的用户详细信息,它是空的,并且一直都会失败。

.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {

$stateProvider.state('login', {
  url: '/login',
  templateUrl: 'views/login.html',
  controller: 'LoginCtrl',
  authenticate: false
});

$stateProvider.state('main', {
  abstract: true,
  url: '/',
  templateUrl: 'views/main.html',
  controller: 'MainCtrl',
  authenticate: true
});

$stateProvider.state('main.documents', {
  url: 'documents',
  templateUrl: 'views/main/documents.html',
  controller: 'MainDocumentsCtrl',
  authenticate: true
});
$stateProvider.state('main.information', {
  url: 'information',
  templateUrl: 'views/main/managing-information.html',
  controller: 'MainInformationCtrl',
  authenticate: true
});
$stateProvider.state('main.calendar', {
  url: 'calendar',
  templateUrl: 'views/main/calendar.html',
  controller: 'MainCalendarCtrl',
  authenticate: true
});
$stateProvider.state('main.notices', {
  url: 'notices',
  templateUrl: 'views/main/notices.html',
  controller: 'MainNoticesCtrl',
  authenticate: true
});
$stateProvider.state('main.settings', {
  url: 'settings',
  templateUrl: 'views/main/settings.html',
  controller: 'MainSettingsCtrl',
  authenticate: true
});

$urlRouterProvider.otherwise('login');
}])

用户身份验证:

  .run(['$rootScope', '$state', 'LoopBackAuth', 'Authentication', function($rootScope, $state, LoopBackAuth, AuthService) {

    $rootScope.$on('$stateChangeStart', function(event, toState, toParams) {
      // redirect to login page if not logged in
      if (toState.authenticate && !LoopBackAuth.accessTokenId) {
        event.preventDefault();

        $rootScope.returnTo = {
          state: toState,
          params: toParams
        };
        $state.go('login');
      }
    });

    // Get data from localstorage after pagerefresh
    // and load user data into rootscope.
    if (LoopBackAuth.accessTokenId && !$rootScope.currentUser) {
      console.log("USER LOGGED IN");
      AuthService.refresh(LoopBackAuth.accessTokenId).then(function() {
        console.log("USER LOADED");

        $state.go('main.documents');
      });
    }

  }]);

0 个答案:

没有答案