Page 339 - AngularJS权威教程
P. 339

22.10  创建自定义动画    319


                  建立了指令之后,我们可以调用$animate函数创建一个动画,与我们的指令通信。                                           19

                  angular.module('myApp', ['ngAnimate'])
                      .animation('.scrollerAnimation', function() {
                          return {                                                                   20
                              animateFun: function(element, done) {
                                  // 我们可以在这个函数中
                                  // 做任意想做的事                                                         21
                                  // 但是需要调用done
                                  // 来让angular知道动画结束了
                              }
                          }                                                                          22
                  });
                  $animate服务暴露了一些方法,为内置指令的动画事件提供帮助。这些$animate服务暴露                                    23
              出来的事件是:

                   enter;                                                                           24
                   leave;
                   move;                                                                            25
                   addClass;
                   removeClass。
                                                                                                     26
                  $animate服务把这些事件以函数的方式提供,让我们能在自己的指令中处理自定义动画。

                                                                                                     27
              22.10.1  addClass()

                  addClass()方法触发了一个基于className变量的自定义动画事件,并且把className值作
                                                                                                     28
              为CSS类添加到元素上。当在DOM元素上添加样式类时,$animate服务给这个className添加了
              一个叫-add的后缀来让我们建立动画。
                                                                                                     29


                          如果没有CSS过渡,在CSS选择器([className]-add)上也没有定义关键帧动
                         画,ngAnimate就不会触发这个动画,只是会把这个样式类加上。                                           30

                  addClass()方法带三个参数。
                                                                                                     31
                   element(jQuery/jqLite元素)
                  正在建立动画的元素。                                                                         32

                   className(字符串)
                  正在建立动画,并且添加到元素上的CSS类。                                                              33

                   done(函数)
                                                                                                     34
                  当动画完成时调用的回调函数。

                  angular.module('myApp', ['ngAnimate'])                                             35
                      .directive('myDirective', function($animate) {
                          return {
                              template: '<div class="myDirective"></div>',
                              link: function(scope, ele, attrs) {                                    36
   334   335   336   337   338   339   340   341   342   343   344