2016-10-21 94 views
0

這裏是我的路由配置:角`ui路由器 - 如何解決從狀態空錯誤?

$stateProvider 
     .state('login', { 
     url: '/', 
     templateUrl: function(){ 
      return 'app/login/login.html'; 
     }, 
     controller: 'loginCtrl as ctrl', 
     data: { 
      requireLogin: false 
     } 
     }) 
     .state('loginSerial', { 
     url: '/login/createCase?sn=', 
     templateUrl: function(){ 
      return 'app/login/login.html'; 
     }, 
     controller: 'loginCtrl as ctrl', 
     data: { 
      requireLogin: false 
     } 
     }) 

$stateChangeStart - 我重定向爲:

if(!$rootScope.isUserLoggedIn && !$rootScope.serialLogin){ 

     console.log('no one is logged in!', toParams.sn); 
     $state.go('/login/createCase',{sn:toParams.sn});; 
     event.preventDefault(); 
     return; 

     } 

它工作正常。但我得到以下錯誤:

angular.js:11706 Error: Could not resolve '/login/createCase' from state '' 
    at Object.transitionTo (angular-ui-router.js:3179) 
    at Object.go (angular-ui-router.js:3107) 
    at index.route.js:152 
    at Scope.$broadcast (angular.js:14889) 
    at Object.transitionTo (angular-ui-router.js:3272) 
    at Array.<anonymous> (angular-ui-router.js:2383) 
    at Object.invoke (angular.js:4219) 
    at handleIfMatch (angular-ui-router.js:1868) 
    at angular-ui-router.js:1925 
    at check (angular-ui-router.js:2041) 

如何解決此問題?我的身體出了什麼問題?任何一個幫助我?

回答

0

$state.go要求您傳遞狀態名稱而不是狀態url。所以你需要執行

$state.go('loginSerial', {params}); 
+0

是的,現在錯誤消失了。但頁面不顯示,但在我登錄頁面顯示錯誤之前。什麼東西需要進一步微調? – user2024080

+0

@ user2024080在您的url中爲您的狀態'/ login/createCase?sn ='移除'=',這樣它就是'/ login/createCase?sn'。這是基於文檔https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters –

1

你應該通過國家,而不是國家的網址

// not this 
$state.go('/login/createCase',{sn:toParams.sn}); 
// but that 
$state.go('loginSerial',{sn:toParams.sn}); 

擴展,另外,任何重定向之前,我強烈建議要檢查,如果我們還沒有被重定向:

if(toState.name === 'loginSerial'){ 
    return; // do not continue in redirection, if already redirected 
} 
+0

是的,錯誤消失了,但我得到空白頁。 – user2024080

+0

準備好協助,但你應該展示更多的.. html模板..甚至更好......一些猛擊者。有一些類似的Q&A與猛拉http://stackoverflow.com/q/26135382/1679310 –

+0

作爲一個測試,我可以更新我的網址,並像這樣測試:'http:// localhost:3000/login/createCase?sn = 3000' - – user2024080