我无法使用服务对外部 API 进行身份验证,并在同一表单提交中注册更新的服务数据。我相当确定这是一个范围问题,但我对 Angular 还是很陌生,并且不确定如何在控制器中正确地确定范围。
我定义了以下身份验证服务:
angular.module('myapp.services', []).
factory('AuthService', ['$http', function($http){
var currentUser;
var isLoggedIn = false;
return {
login: function(user, pass) {
$http({method: 'GET', url:'https://some-api/api/login/'+user+'/'+pass}).
success(function(data){
currentUser = data;
isLoggedIn = true;
});
},
isLoggedIn: function(){ return isLoggedIn; },
currentUser: function(){ return currentUser; }
};
}]);
然后我在绑定到“用户”的视图中有一个基本表单,然后在我的控制器中:
angular.module('myapp.controllers', [])
.controller('LoginCtrl', ['$scope', 'AuthService', function(scope, AuthService) {
scope.update = function(user){
AuthService.login(user.username, user.password);
console.log(AuthService.currentUser());
};
}]);
在第一次提交时,我在控制台中得到“未定义”,在第二次提交时,我在控制台中看到了预期的数据......我一直在阅读有关返回承诺之类的内容,只是对给出的精确实现有点不清楚我的代码结构...