Page 371 - AngularJS权威教程
P. 371

26.2  交互    351


                  无论使用哪种方式,都需要在你的index.html中以脚本的方式引入这个库:                                             19

                  <script src="/bower_components/angular-touch/angular-touch.js"></script>
                  最后,还需要以依赖的方式在你的应用中引入ngTouch:                                                       20

                  angular.module('myApp', ['ngTouch']);
                                                                                                     21
                  现在,就可以开始使用ngTouch库了。

              26.2.2  ngTouch                                                                        22


                  处理点击事件时,移动设备浏览器与桌面浏览器的工作方式略有不同。移动设备首先会检测
              到一个tap事件,然后等待300毫秒去检测其他点击(tap)事件(比如,等待发现用户是否在双                                         23
              击设备)。在这个延时之后,浏览器才会触发点击事件。
                                                                                                     24
                  这一延迟可能让人感觉到应用反应非常迟钝。除了检测click事件,你也可以检测touch事件。
                  ngTouch库通过ng-click指令为我们完美地处理了这一功能,同时它还负责调用正确的点击
              事件。也就是说会调用所谓的快速点击事件。                                                                   25

                      在快速点击被调用之后,才会调用浏览器的延时点击,这会触发一个双击行为。                                            26
                  ngTouch负责在ng-click事件上移除这个浏览器延时。

                  在移动设备上的浏览器中使用ngClick指令的方式,与在桌面浏览器中的方式完全相同:                                         27
                  <button ng-click="save()">Save</button>

                  ngTouch还引入了两个新指令:swipe指令。swipe指令允许我们捕获用户滑屏行为,不论是                                   28
              从左侧还是往右侧。swipe指令非常有用,它可以让用户通过滑动浏览器相册,或者导航到应用
              的其他部分。                                                                                 29

                  ngSwipeLeft指令检测元素从右向左滑动,而ngSwipeRight指令检测元素从左向右滑动。
                                                                                                     30
                      ngSwipe*指令有用的特性之一便是,它们既能用于基于touch事件的设备,也能用
                  于鼠标点击和拖拽。
                                                                                                     31
                  使用ngSwipe*指令很容易。比方说有一个邮件列表,我们希望它如同流行的手机邮件客户端
              MailboxApp一样,能够显示针对每封邮件的操作。
                                                                                                     32
                  在这个元素列表上使用swipe指令时可以很容易实现这一功能。在显示邮件列表时,你可以
              在特定的邮件条目上启用某个方向的滑屏,来启动显示行为。
                                                                                                     33
                  在显示邮件条目时,可以从反方向实现隐藏行为,如图26-1所示。

                  <ul>                                                                               34
                      <li ng-repeat="mail in emails">
                          <div ng-show="!mail.showActions" ng-swipe-left="mail.showActions=true">
                              <div class="from">
                                  From: <span>{{ mail.from }}</span>                                 35
                              </div>
                              <div class="body">
                                  {{ mail.body }}                                                    36
                              </div>
   366   367   368   369   370   371   372   373   374   375   376