2016-10-21 92 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