Page 381 - AngularJS权威教程
P. 381

26.4  Cordova 入门    361


                  当你对应用作出改变时,需要确保重新构建应用,如图26-8所示。                                                    19

                  $cordova build ios
                                                                                                     20


                                                                                                     21


                                                                                                     22


                                                                                                     23

                                             图26-8 使用Safari构建应用
                                                                                                     24
              26.4.7  Anguar中的Cordova服务


                  当你准备好Cordova应用,设备也已经连接好,一切都准备好时,Cordova会触发一个叫做                                     25
              deviceready的浏览器事件。

                  在Angular中,可以在这个事件被触发之后启动应用,或者也可以在deviceready事件被触发                                  26
              之后使用promise处理应用的逻辑部分。
                  要在接收到deviceready事件之后启动应用,需要给这个事件设置一个监听器,然后手动启                                      27
              动应用:
                                                                                                     28
                  angular.module('myApp', []);

                  var onDeviceReady = function() {
                      angular.bootstrap(document, ['myApp']);                                        29
                  };
                  document.addEventListener('deviceready', onDeviceReady);
                                                                                                     30
                  这里推荐一个替代的方法监听deviceready事件,就是在deviceready事件被触发之后使用
              promise的方式设置执行绑定。
                                                                                                     31
                  在这里我们设置了一个Angular模块监听deviceready事件。也可以使用服务来监听
              deviceready事件,然后依赖于这个事件是否被触发来解析promise。
                                                                                                     32
                  angular.module('fsCordova', [])
                    .service('CordovaService', ['$document', '$q',
                      function($document, $q) {
                          var d = $q.defer(),                                                        33
                              resolved = false;
                          var self = this;
                          this.ready = d.promise;                                                    34

                          document.addEventListener('deviceready', function() {
                              resolved = true;                                                       35
                              d.resolve(window.cordova);
                          });

                          // 检查一下以确保没有漏掉这个事件(以防万一)                                                   36
                          setTimeout(function() {
   376   377   378   379   380   381   382   383   384   385   386