AngularJS $ location.path循环回root

时间:2015-05-19 17:19:43

标签: javascript html angularjs angular-ui-router state

我到处寻找,但没有一种潜在的解决方案有效。

登录页面应该在成功登录或注册后路由到标签页。由于某种原因,它每次都会指向根或otherwise状态。有没有人有什么建议?谢谢!

国:

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

$stateProvider
.state('intro', {
url: '/intro',
templateUrl: 'templates/intro.html',
controller: 'IntroCtrl'
})
 .state('signin', {
  url: '/sign-in',
  templateUrl: 'templates/sign-in.html',
  controller: 'SignInCtrl'
})
.state('forgotpassword', {
  url: '/forgot-password',
  templateUrl: 'templates/forgot-password.html'
})
.state('tabs', {
  url: '/tab',
  abstract: true,
  templateUrl: 'templates/tabs.html'
})
.state('tabs.home', {
  url: '/home',
  views: {
    'home-tab': {
      templateUrl: 'templates/home.html',
      controller: 'HomeTabCtrl'
    }
  }
});


 $urlRouterProvider.otherwise('/intro');

})

登录时应路由到标签页的控制器:

  .controller('SignInCtrl', function($scope, $state, $firebaseAuth, $location) {

$scope.login = function(username, password) {
    var fbAuth = $firebaseAuth(fb);
    fbAuth.$authWithPassword({
        email: username,
        password: password
    }).then(function(authData) {
        $location.path('/tab')
    }).catch(function(error) {
        console.error("ERROR: " + error);
    });
}

$scope.register = function(username, password) {
    var fbAuth = $firebaseAuth(fb);
    fbAuth.$createUser({email: username, password: password}).then(function() {
        return fbAuth.$authWithPassword({
            email: username,
            password: password
        });
    }).then(function(authData) {
        $location.path("/tab");
    }).catch(function(error) {
        console.error("ERROR " + error);
    });
}
})

1 个答案:

答案 0 :(得分:2)

由于您使用的是ui-router和基于状态的路由,只需调用$state.go()即可在状态之间快速导航。注意 - 您可能需要从abstract: true州移除tabs或转换为tabs.home。例如......

.then(function(authData) {
     // $location.path('/tab');
     $state.go('tabs')
})

有关详细信息,请参阅documentation - $state.go(to [, toParams] [, options])

  

转换到新状态的便捷方法