自定义指令

自定义指令:自己定义的指令,可以封装一些 dom 操作,扩展额外功能

 

语法:

(无论是全局方式定义指令 还是 局部方式定义指令,最终 只要把指令定义完成,页面当中用起来  只需要 eg : <input   v-指令名   type = "text" > 。只要一绑上,在当前输入框被插入到页面当中的时候,就会自动执行 inserted 钩子)

1. 全局注册:

Vue.directive ( ' 指令名 ' ,  { // 指令的配置项,在配置项当中需要写跟指令相关的钩子

        inserted ( el )  {   

             // inserted 就是指令的生命周期钩子,表示当前指令所绑定的元素被添加到页面当中的时候  会自动调用。形参 el 就可以拿到指令所绑定的元素

            // 可以对 el 标签,扩展额外功能

            el.focus ()  // 获取焦点

      }

})

 

2. 局部注册:

directives : {

        指令名 : {

            inserted ( el ) {

                  el.focus ()

            }

      }

}

 

 ----------------------------------------------------------------------------------------------------------------------

 

指令的值:

语法:在绑定指令时,可以通过 “ 等号 ” 的形式为指令 绑定  具体的参数值

             (eg:<div  v-color = " yanse " > 我是内容 </div> ;yanse 是 data 函数里定义的变量,比如 yanse = ' red ')

           通过 binding.value 可以拿到 指令值 yanse ,指令值修改会 触发 update 函数

 

directives : {

      color : {

            inserted ( el ,  binding) { // 元素被添加到页面中时就立刻将 binding.value 赋值给 el.style.color 

                  el.style.color = binding.value

            } ,

            update ( el ,  binding ) {

             // 指令值 yanse 在被修改的时候,比如将 yanse 的值由 red 改为 blue,就会触发这个 update 函数,提供值变化后,dom 更新的逻辑

                  el.style.color = binding.value

            }

      }

}

 

posted @ 2023-10-09 22:28  1stzz1  阅读(66)  评论(0编辑  收藏  举报