Page 205 - AngularJS权威教程
P. 205

18.10 运行   185


                          var po = document.createElement('script');                                 1
                          po.type = 'text/javascript';
                          po.async = true;
                          po.src = 'https://apis.google.com/\js/client:plusone.js?onload=onLoadCallback';
                          var s = document.getElementsByTagName('script')[0];                        2
                          s.parentNode.insertBefore(po, s);
                        })();
                      </script>                                                                      3
                    </body>
                  </html>
                  现在,注意我们给Google JavaScript库添加了一个onload回调,并且没有使用ng-app来启动                            4
              我们的应用。如果让Angular自动启动我们的应用,我们会进入一个竞态条件。在这种条件下,
              Google API可能在应用启动时尚未加载。                                                                5
                  应用的这种不确定性会让体验变得无法使用,所以,我们要在onLoadCallback中手动启动应用。

                  为了手动启动应用,我们在window服务中添加了onLoadCallback函数。在我们能启动                                    6
              Angular之前,需要确认Google登录客户端已经加载。

                  Google API客户端,或者gapi,是在运行时间被包含进来的,并且是被默认设置的,以便延                                    7
              迟加载服务。通过告诉gapi.client在启动应用之前提前加载oauth2库,我们避免了任何潜在的
              oauth2库不可用的后果。                                                                         8

                   // in scripts/app.js
                   window.onLoadCallback = function() {                                              9
                       // 当文档对象准备好了
                       angular.element(document).ready(function() {
                           // 启动oauth2库
                           gapi.client.load('oauth2', 'v2', function() {                             10
                               // 最后,启动我们的Angular应用
                               angular.bootstrap(document, ['myApp']);
                           });                                                                       11
                      });
                  }

                  必要的库创建好了,而且我们的应用也做好了启动的准备,这时我们可以建立应用的授权部分。                                         12

              18.10 运行                                                                               13


                  鉴于我们是在使用一个服务,它取决于我们的URL是一个预期的URL,我们需要运行一个服
              务器,而不是简单地在浏览器中加载HTML。                                                                  14
                  我们推荐使用非常简单的Python SimpleHTTPServer来提供文件目录。这个python服务器是写
              来提供当前目录的,这个目录会被在本机当作一个web服务器运行。我们可以使用SimpleHTTPServer                                  15
              来假装是在web服务器上运行一个应用,并且把它加载到web浏览器中。
                                                                                                     16
                  $ cd PROJECT_DIRECTORY
                  $ python -m SimpleHTTPServer 9000
                  现在可以在浏览器中加载URL http://localhost:9000/  ,并且看到我们的Angular应用在浏览器                       17
              中运行。
                                                                                                     18
   200   201   202   203   204   205   206   207   208   209   210