Page 73 - AngularJS权威教程
P. 73

8.2  向指令中传递数据   53


                  回到主题,我们用属性将数据从DOM中复制到指令的隔离作用域中:                                                    1

                  <div my-directive
                      my-url="http://google.com"
                      my-link-text="Click me to go to Google"></div>                                 2

                  angular.module('myApp', [])
                  .directive('myDirective', function() {                                             3
                      return {
                          restrict: 'A',
                          replace: true,
                          scope: {                                                                   4
                              myUrl: '@', //绑定策略
                              myLinkText: '@' //绑定策略
                          },                                                                         5
                          template: '<a href="{{myUrl}}">' +
                              '{{myLinkText}}</a>'
                      };                                                                             6
                  });


                          在线示例:http://jsbin.com/eloKoDI/1/edit。                                      7

                  默认情况下约定DOM属性和JavaScript中对象属性的名字是一样的(除非对象的属性名采用                                     8
              的是驼峰式写法)。

                  由于作用域中属性经常是私有的,因此可以(虽然不常见)指定我们希望将这个内部属性同                                           9
              哪个DOM属性进行绑定:
                  scope: {                                                                           10
                      myUrl: '@someAttr',
                      myLinkText: '@'
                  }                                                                                  11
                  上面的隔离作用域中的内容是:将指令的私有属性$scope.myUrl同DOM中some-attr属性
              的值绑定起来。这个值既可以是硬编码的也可以是当前作用域(例如Some-attr="{{expr-                                       12
              ession}})中某个表达式的运算结果。

                  在DOM中要用some-attr代替my-url:                                                          13

                  <div my-directive
                       some-attr="http://google.com"
                       my-link-text="Click me to go to Google" >                                     14
                  </div>
                  更进一步,还可以在DOM对应的作用域上运算表达式,并将结果传递给指令,在指令内部                                           15
              最终被绑定在属性上:

                  <div my-directive                                                                  16
                       some-attr="{{ 'http://' + 'google.com' }}">
                  </div>
                  在此之上,我们来看看如何创建一个文本输入域,并将输入值同指令内部隔离作用域的属性                                           17
              绑定起来:
                                                                                                     18
   68   69   70   71   72   73   74   75   76   77   78