Im пытается поймать ошибки, возвращенные с моего сервера, и вернуть их в конце функции входа. Если это удастся, ошибки не будут возвращены, и если это не удастся, список ошибок будет возвращен. Код Логина является частью AngularJS службы, как показано ниже:Javascript/AngularJS Scope Issue
angular.module('auth').service('RestfulAuthService',['$http','REST_BASE_URL',function($http,base_url){
var self = this;
//define backend urls
var api_urls = {
login: base_url+'/login/',
}
//hold user credentials to be accessed
var api_user = {
username:null,
email:null,
first_name:null,
last_name:null,
}
var api_user_token = null;
self.user_profile = function(){
return api_user;
}
self.login = function(username,password){
var errors = {none:null};
$http.post(api_urls.login,{username:username,password:password})
.then(function(response){ //success
//extract data
api_user.username = response.data.username;
api_user.email = response.data.email;
api_user.first_name = response.data.first_name;
api_user.last_name = response.data.last_name;
api_user_token = response.data.token;
//Add auth token to headers for all future requests
$http.defaults.headers.common['Authorization'] = api_user_token;
errors = {};
},function(response){ //error
errors = response.data; //return serializer errors
});
return errors;
};
//REST OF SERVICE ...
возвращаемого значения, однако, всегда {ни: нулевая}. Другими словами, переменная ошибок не была изменена функциями успеха или сбоя. Я уверен, что это проблема, но я не знаю, как ее исправить.
$ http.post - это асинхронная функция. Вы возвращаете свои ошибки до того, как закончится $ http.post. – k4l4m
Ах, конечно! Благодарю. – MichaelJK