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,这样我们可以提供一个更好的方法,
             与用户进行交互,并且通过用户保存一些持久的、特有的数据。
   205   206   207   208   209   210   211   212   213   214   215