Vue自定义指令

博客介绍了自定义指令相关内容。指令用于操作DOM,使用形式为属性。自定义指令有全局和局部两种注册方式,全局注册用Vue.directive,局部注册在directives对象里配置。最后还进行了实例演示。

自定义指令
1. 指令是用来操作DOM
2. 指令的使用形式: 属性
3. 自定义指令方式有两种:
- 全局注册指令
Vue.directive( 指令的名称, 指令的配置项 )
- 局部注册指令
directives: {
‘指令名称’: 指令的配置项
}
研究:

      指令的配置项提供了5个钩子函数 

      以及钩子函数中的参数
        console.log( 'el',el  ) // el 指令绑定的元素
        console.log( 'binding',binding ) // 指令的详细信息
        console.log( 'vnode', vnode )  // 当前绑定元素的信息
        console.log( 'oldVnode',oldVnode ) // 上一个绑定元素的信息

实例演示

   <div id="app">
        <div class="box">
         <button  @click = 'flag = false'> 点击 </button>
         <input type="text"  v-if = "flag" v-focus.yyb v-model = "msg">
         <input type="text"  v-if = "flag" v-focus v-model = "msg">
        </div>
      </div> 
  
Vue.directive( 'focus',{
    bind ( el,binding,vnode,oldVnode ) { //调用一次,指令一绑定在元素身上就会触发
      // console.log( 'bind focus' )
      // console.log( 'el',el  ) // el 指令绑定的元素
      // console.log( 'binding',binding ) // 指令的详细信息
      // console.log( 'vnode', vnode )  // 当前绑定元素的信息
      // console.log( 'oldVnode',oldVnode ) // 上一个绑定元素的信息
      // el.style.background = 'red'
    },
    inserted (  el,binding,vnode,oldVnode ) { // 当前绑定的元素插入父节点时调用
      el.focus()
      if( binding.modifiers.yyb ){
        el.style.color = 'green'
      }else{
        el.style.color = 'red'
      }
      console.log( binding )
      console.log( 'inserted ' )
    },
    update ( el, binding, vnode, oldVnode ) {  // 当前指令绑定的元素发生改变
      console.log( 'update' )
      console.log( 'el',el  ) // el 指令绑定的元素
      console.log( 'binding',binding ) // 指令的详细信息
      console.log( 'vnode', vnode )  // 当前绑定元素的信息
      console.log( 'oldVnode',oldVnode ) // 上一个绑定元素的信息
    },
    componentUpdated ( el,binding,vnode,oldVnode) { //当前绑定元素发生改变,或是子元素发生改变
      console.log( 'componentUpdated' )
    },
    unbind ( el,binding,vnode,oldVnode) { // 组件销毁时触发
      console.log( 'unbind' )
    }
  })

  new Vue({
    el: '#app',
    data: {
      msg: 1000,
      flag: true
    },
    directives: {
      'focus': {
        bind () {

        },
        inserted () {

        },
        update () {

        },
        componentUpdated () {

        },
        unbind () {
          
        }
      }
    }
  })
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值