我到处寻找,但没有一种潜在的解决方案有效。
登录页面应该在成功登录或注册后路由到标签页。由于某种原因,它每次都会指向根或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);
});
}
})
答案 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])
转换到新状态的便捷方法