2015-05-30 89 views
0

$ state.go(...)時我已經配置這樣的路由器:

function Router($injector) { 
    $injector.get('$locationProvider').html5Mode({ 
     enabled: true, 
     requireBase: false 
    }); 
    $injector.get('$stateProvider') 
     .state('login', { 
      url: '/login', 
      templateUrl: 'app/components/login/login.html' 
     }) 
     .state('auth', { 
      abstract: true, 
      templateUrl: 'app/layout/layout.html' 
     }) 
     .state('auth.home', { 
      url: '/home', 
      templateUrl: 'app/components/home/home.html', 
      auth: true 
     }); 

    $injector.get('$urlRouterProvider').otherwise('/home'); 
} 

run塊配置是這樣的:

function stateChangeHandler(event, toState, toParams) { 
    var injector = this.$injector; 

    function inject(name) { 
     return injector.get(name); 
    } 

    if (
     toState.auth && 
     !inject('AuthService').isAuthenticated() 
    ) { 
     event.preventDefault(); 
     inject('$state').go('login'); 
    } else if (
     !toState.auth && 
     inject('AuthService').isAuthenticated() 
    ) { 
     event.preventDefault(); 
     inject('$state').go('auth.home'); 
    } 
} 

function RouterRun($injector) { 
    $injector.get('$rootScope').$on('$stateChangeStart', 
     stateChangeHandler.bind({ 
      $injector: $injector 
     })); 
} 

//修訂

一起:

angular.module('router', ['ui.router']) 
    .config(Router) 
    .run(RouterRun); 

angular.module('app', [..., 'router']); 

,當我只輸入在這樣172.16.16.114:8080和用戶地址欄主機沒有驗證,那麼我得到

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! 
Watchers fired in the last 5 iterations: [] 
http://errors.angularjs.org/1.3.15/$rootScope/infdig?p0=10&p1=%5B%5D 

at REGEX_STRING_REGEXP (angular.js:63) 
at Scope.$get.Scope.$digest (angular.js:14346) 
at Scope.$get.Scope.$apply (angular.js:14571) 
at bootstrapApply (angular.js:1455) 
at Object.invoke (angular.js:4203) 
at doBootstrap (angular.js:1453) 
at bootstrap (angular.js:1473) 
at angularInit (angular.js:1367) 
at HTMLDocument.<anonymous> (angular.js:26304) 
at jQuery.Callbacks.fire (jquery.js:3099) 

但最終我在酒吧的地址到達目標login172.16.16.114:8080/login

我找不到爲什麼會出現這個錯誤。請幫助任何建議。

+0

這是很容易解決的。請添加您的視圖(HTML),所以我們可以幫助你。 – lin

+0

@lin您要看什麼視圖(模板)? –

+0

我想知道,你的'函數'被調用的時間和方式。 – lin

回答

0

約曼吞掉棱角發生器產生其默認不包括在生成的HTML模板緩存模塊一飲而盡任務,所以對於模板的所有請求都不會通過緩存模塊發送到服務器。通過在登陸html問題中添加生成的文件解決了吞噬任務之後的更改。

相關問題