Page 138 - AngularJS权威教程
P. 138

118  第 14 章  服务


                 为了在控制器之间共享数据,需要在服务中添加一个用来储存用户名的方法。记住,服务在
             应用的生命周期内是单例模式的,因此可以将用户名安全地储存在其中。

                 angular.module('myApp.services', [])
                     .factory('githubService', function($http) {
                         var githubUrl = 'https://api.github.com',
                             githubUsername;

                         var runUserRequest = function(path) {
                             // 从使用JSONP的Github API的$http服务中返回promise
                             return $http({
                                 method: 'JSONP',
                                 url: githubUrl + '/users/' +
                                     githubUsername + '/' +
                                     path + '?callback=JSON_CALLBACK'
                             });
                         };
                         // 返回带有两个方法的服务对象
                         // 事件
                         // 和setUsername
                         return {
                             events: function() {
                                 return runUserRequest('events');
                             },
                             setUsername: function(username) {
                                 githubUsername = username;
                             }
                         };
                     });
                 现在,服务中有一个setUsername方法,用来保存当前的GitHub用户名了。

                 githubService可以注入到应用的任何一个控制器中,并可以在控制器中调用events()方
             法,且无须担心当前作用域对象上的用户名是否是正确的。

                 angular.module('myApp', ['myApp.services'])
                 .controller('ServiceController',
                 function($scope, githubService) {
                     $scope.setUsername =
                         githubService.setUsername;
                 });


             14.3  创建服务时的设置项


                 在AngularJS应用中,factory()方法是用来注册服务的最常规方式,同时还有其他一些API
             可以在特定情况下帮助我们减少代码量。
                 共有5种方法用来创建服务:
                  factory()
                  service()
                  constant()
                  value()
                  provider()
   133   134   135   136   137   138   139   140   141   142   143