Angularjs中的自定义指令

xiaoxiao2021-02-28  92

1. angularJs的基本指令

   定义一个基本自定义指令    app.directive(name, fn)    name: 自定义指令的名称,必须是驼峰命名法    fn: 自定义指令的处理函数,必须返回一个JSON对象

代码格式如下:

2.自定义指令的place选项,用于指定是否使用模板页面来替换自定义指令,默认值为false

   当为true时,可以被替代,为false时不被替代

具体使用代码如下:

3.自定义指令的restrict选项:用来指定自定以指令在页面中出现的方式

   默认情况下,自定义指令,可以被当成标签或者标签的属性进行使用,通常,自定义指令可以被配置当成*标签*标签属性*标签的class*注释,四种方式使用,可以通过restrict选项进行配置,取值:E/C/M/A

  a. 当成标签使用  E:Element 推荐使用

     <my-dict></my-dict>

  b.当成标签的属性使用 A:Attribute 推荐使用

     <div my-dict></div>

  c.当成标签的class名称使用 C:Class,不推荐使用 ,class的形式,很容易在样式处理的过程中,被无端的修改

     <div class="my-dict"></div>

  d.在注释中使用指令 M:Mark,使用的时候需要注意;必须设置replace为true

    注释的方式极大的降低了代码的可读性和维护性,不推荐使用.

4.  自定义指令的transclude选项 , 用于在使用自定义标签时,指定是否使用标签中包含的内容

     默认情况下,transclude选项为false,表示自定义指令直接当成空标签来使用, 如果指定transclude选项为true,表示可以使用标签中包含的内容,但是要配合ng-transclude指令一起使用

使用代码如下:

   

   

5.自定义指令的controller选项:用于给自定义指令添加一个局部控制器

   代码如下:

   

6.自定义指令的compile选项:用于控制指令执行的过程

   执行代码如下:

   

7.自定义指令的scope选项:用于控制自定义指令/组件的作用域

8.自定义指令的 scope选项是用来设置作用域的,不是定义变量或者函数的

   1.scope选项中的&符号,主要用于将父级作用域中的数据封装成函数进行访问,实现不同作用域之间的数据隔离*/    2. scope选项中的=符号,主要用于将父级作用域中的数据 和当前作用域中的变量进行了双向绑定    3. scope选项中的@符号,主要用来通过属性获取父级作用域中的数据,赋值给当前作用域中的变量fnz,此时父->子是数据单向绑定的子作用域中只能通过变量fnz读取父作用域中的数据

具体代码如下:

总结:

自定义指令和组件的区别:

          自定义指令和组件基本没有什么区别,都是用于将页面中出现的重复的UI和数据的处理,封装起来,提高代码的复用性。同时在项目开发过程中,积累大量的封装好的自定义指令或组件,在后续的项目开发时直接使用,提高开发效率。

什么时候用自定义指令?什么时候用组件?

        a.在老版本中的项目中,自定义指令使用较多,Angular1.4以前的版本中,组件的概念比较模糊,所以将页面中出现的大量重复的UI和数据处理,封装自定义指令来提高复用性

        b. 新版本项目中,自定义组件使用较多,在Angular1.5以后,官方也开始重视组件化开发,所以将自定义指令进行了重新定义,并创建了component组建的部分,在1.5以后的项目开发中,官方推荐使用component组件来封装重复的ui和数据指令,极大程度上替代了使用比较复杂的自定义指令

通常,页面中出现的重复ui和数据处理比较复杂的情况下,使用自定义组件,如果只是简单的重复ui或者说附带了简单数据处理,可以使用自定义指令

转载请注明原文地址: https://www.6miu.com/read-40600.html

最新回复(0)