1
我已經構建了一些登錄,並希望用戶在成功登錄後被踢到儀表板頁面。截至目前,除非在我重新加載儀表板頁面之前模型不更新,否則一切都按預期工作。
我寫了一個服務來處理$ http請求:
abcApp.service('Login', function($q, $http){
return({
login:login
})
var headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
function login(login){
var formVals = {
username: login.username.$modelValue,
password: login.password.$modelValue,
remember: login.remember.$modelValue,
}
var request = $http.post('assets/php/do_login.php', formVals, null, headers);
return(request.then(handleSuccess, handleError));
}
function handleSuccess(response) {
return(response.data);
}
function handleError(response) {
if (
! angular.isObject(response.data) ||
! response.data.message
) {
return($q.reject("An unknown error occurred."));
}
// Otherwise, use expected error message.
return($q.reject(response.data.message));
}
});
下面是應處理在登錄控制器:
$scope.doLogin = function(){
Login.login($scope.login_form)
.then(function(data){
if(data.status == 'success'){
$scope.currentUser = data.user;
$scope.msg = 'Welcome '+data.user.realname;
$scope.userId = data.user.id;
$scope.loggedIn = true;
}
}).then(function() {
return $timeout(function() {
$state.go(
'dashboard',
{},
{reload: true}
);
}, 250);
});
};
我原本這一切都在控制,那麼我將其分成服務和控制器。我試過$ scope。$ apply,但是我得到一個inprog錯誤。我如何在不重新加載的情況下更新模型?