Page 210 - AngularJS权威教程
P. 210
190 第 18 章 服务器通信
$scope.signedIn = function(oauth) {
$scope.user = oauth;
}
});
18.12 UserService
在更加深入地探讨AWS方面的内容之前,我们先要创建一个UserService,用于持有新用户。
UserService会处理与AWS后端交互的多数工作,并且会保持当前用户的一个副本。
尽管还没有对添加后端这件事准备得特别充分,我们还是可以先把它构建成持有一个用户实
例的持久副本。
在scripts/services.js中,我们创建UserService的开始部分:
angular.module('myApp.services', [])
.factory('UserService', function($q, $http) {
var service = {
_user: null,
setCurrentUser: function(u) {
if (u && !u.error) {
service._user = u;
return service.currentUser();
} else {
var d = $q.defer();
d.reject(u.error);
return d.promise;
}
},
currentUser: function() {
var d = $q.defer();
d.resolve(service._user);
return d.promise;
}
};
return service;
});
尽管这个设置现在还有些人为的痕迹,但我们要的是在服务中把currentUser固化的功能。
记住,服务是单例对象,它们存在于应用的生命周期中。
至此,我们可以把用户设置给UserService,而不是简单地在signedIn()函数的返回中设置
用户,如下所示:
angular.module('myApp')
.controller('MainController',
function($scope) {
$scope.signedIn = function(oauth) {
UserService.setCurrentUser(oauth)
.then(function(user) {
$scope.user = user;
});
}
});
要让我们的应用能运行,需要保持真实用户的email,这样我们可以提供一个更好的方法,
与用户进行交互,并且通过用户保存一些持久的、特有的数据。