Page 433 - AngularJS权威教程
P. 433

31.11  实现用户服务    413


                  设置界面本身是一个功能单一的表单,负责让用户切换到它们感兴趣的城市。HTML类似于                                          19
              这块代码(其中有一些我们还没实现的功能):

                  <h2>Settings</h2>                                                                  20
                  <form ng-submit="save()">
                      <input type="text" ng-model="user.location" placeholder="Enter a location" />
                      <input class="btn btn-primary" type="submit" value="Save" />
                  </form>                                                                            21


              31.11  实现用户服务                                                                          22


                  出于同样的原因,我们隐藏了Wunderground API的复杂度,而且我们还希望隐藏用户API。
              这样就可以使用本地存储,以及在应用的任意部分与用户设置控制器通信。                                                      23
                  UserService本身非常简单,它不需要在应用中配置。在不使用本地存储的情况下,                                         24
              UserService其实很简单:

                  // ...                                                                             25
                  .factory('UserService', function() {
                      var defaults = {
                          location: 'autoip'
                      };                                                                             26
                      var service = {
                          user: defaults
                      };                                                                             27

                      return service;
                  })
                                                                                                     28
                  这个服务在应用程序生命周期内都会持有user对象。也就是说,只要浏览器窗口开着,用户
              对应用程序的设置都会保持不变;然而,如果用户在Chrome中打开一个新标签页,这些设置就
              会丢失,这是不理想的。                                                                            29

                  可以通过使用Chrome的sessionStorage功能来跨应用保留用户设置。幸好,这个API非常
              简单。                                                                                    30
                  只需添加两个函数给UserService:
                                                                                                     31
                   save
                   restore
                                                                                                     32
                  即使使用这些功能,UserService的代码也没有增长太多:

                  // ...                                                                             33
                  .factory('UserService', function() {
                      var defaults = {
                          location: 'autoip'                                                         34
                      };

                      var service = {
                          user: {},                                                                  35
                          save: function() {
                              sessionStorage.presenty = angular.toJson(service.user);
                          },                                                                         36
                          restore: function() {
   428   429   430   431   432   433   434   435   436   437   438