所有
我正在使用AngularJS PhoneGap应用程序。我遇到了一个在收到API调用响应后立即发生的重定向。我的代码位于gist.github.com
我的问题是在controllers.js的第300行,我在then()块中调用我的重定向。
UserService.login($scope.user.email, $scope.user.password)
.then(function(response) {
globals.session_id = response.data.meta.session_id;
globals.logged_in_userId = response.data.response.users[0].id;
if ($scope.user.remember === true) {
window.localStorage.setItem("_session_id", response.data.meta.session_id);
window.localStorage.setItem("logged_in_userId", response.data.response.users[0].id);
} else {
window.localStorage.removeItem("_session_id");
window.localStorage.removeItem("logged_in_userId");
}
})
.then(function() {
$location.path("/tab/locations");// <=== This line doesn't cause an error but does not result in a redirect
})
.
catch (function(response) {
alert(JSON.stringify(response));
});
如果有人能帮助我,我会很感激!
谢谢, 布鲁斯
答案 0 :(得分:7)
尝试$ rootScope。$ apply();在$ location.path()
之后OR
$scope.$apply(function() {
$location.path("/tab/locations");
});
您也可以使用$ location.url()
答案 1 :(得分:1)
您的then
处理程序需要返回一些内容,以便在下一个条件下解除承诺。
只需在return response
处理程序的末尾添加then
。
答案 2 :(得分:0)
看来这个问题实际上是在我的app.js运行函数调用中。在位置更改时,它会查看全局变量以查看是否已设置用户名,如果没有,则会拦截将客户端发送到登录页面的调用。一旦我在OnLocationChange处理程序中移动我的代码以查看那里的变量,它就会正确地重定向。
谢谢, 乙