Page 67 - AngularJS权威教程
P. 67

8.1  指令:自定义 HTML 元素和属性   47


                  注意,代码和你在文本编辑器中输入的没有区别,同时其中并没有一个链接标签。但的确屏                                           1
              幕上有一个链接写着“Click Here”,这是怎么回事?
                  为了分析这个现象,右键点击链接,在弹出菜单中选择Inspect Element,如图8-3所示。                                   2



                                                                                                     3


                                                                                                     4


                                                                                                     5


                                               图8-3  Inspect Element                                 6

                  这样就可以打开Chrome开发者工具,并看到AngularJS在页面加载以及调用指令定义后生成
              的代码,AngularJS把生成后的代码提供给Chrome进行渲染,如图8-4所示。                                             7

                                                                                                     8



                                                                                                     9


                                                                                                     10


                                                                                                     11


                                                                                                     12

                                               图8-4  查看指令内部
                  默认情况下,AngularJS将模板生成的HTML代码嵌套在自定义标签<my-directive>内部。                               13

                  下面向指令定义中添加一些新的设置:我们可以将自定义标签从生成的DOM中完全移除掉,
              并只留下由模版生成的链接。将replace设置为true就可以实现这个效果:                                                 14
                  angular.module('myApp', [])
                  .directive('myDirective', function() {                                             15
                      return {
                          restrict: 'E',
                          replace: true,
                          template: '<a href="http://google.com">Click me to go to Google</a>'       16
                      };
                  });
                                                                                                     17
                  再次看一下生成后的代码,会发现DOM中原始的指令声明已经不见了,只有我们在模板中
              写的HTML代码。replace方法会用自定义元素取代指令声明,而不是嵌套在其内部,如图8-5
              所示。                                                                                    18
   62   63   64   65   66   67   68   69   70   71   72