vue自定义指令

转自:https://www.cnblogs.com/ylHeyden/p/7544373.html

Vue的官方自定义directive,基本调用简洁如下:

 

Vue.directive('my-directive', {
  bind: function () {},// 指令与被绑定元素第一次绑定时触发,通常做一些事件监听的初始化
  inserted: function () {},// 绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。
  update: function () {},// 被绑定元素内容发生变化时触发,可接受参数,在这里也可以进行事件监听的初始化
  componentUpdated: function () {},// 被绑定元素所在模板完成一次更新周期时调用。
  unbind: function () {}// 指令与元素解绑时触发,比如通过路由转跳页面时需要解绑指令
})

 

  在某些组件中,类似于elment-ui中的checkbox多选按钮,里面的给出的api并没有click事件,只能通过change事件(也就是选中和未选中切换时触发)来进行一些操作,这里如果有一个必须点击触发的需求的话,那就可以用自定义指令重新赋予点击事件初步解决,当然这里主要是看它如何回调反作用于当前Vnode(当前页面);

 

<el-checkbox  v-banSlect="{fn:checkSlect}">test</el-checkbox>


 directives:{//这里面没有定义this对象
            banSlect:{
                bind(el,bind,vnode){

                   
                },
                update(el,bind){
                    fn.call(null,mval,val,code,item,oldval);//这里就是运行fn
 
            //只要dom刷新,update就会触发,即使值没有改变
                },
                unbind(){
                   
                }
            }
        },
methods: {
    checkSlect(){alert(“已回调”)
                 console.log(this)//这里就是改组件的VueComponent对象
                }
            },
},

 

  通过上面的方法就可以使自定义的方法和整个组件关联了,想调用组件里面的方法,就只能通过对象字面量吧函数方法传给bind里面,然后在相应状态(这里是update)调用该方法,这里面有点奇怪的是checkSlect里面的this是有值的,update里是没this定义的,直接运行的checkSlect或者用上文的call,理论上是this是指向Windows(非严格模式),但这里this指向的是VueComponent对象,从效果上来说就是我们想要的效果,至于原因,我后面再跟进。

  总而言之,通过对象字面量传递函数方法或者属性变量来关联自定义的指令和组件。

转自:https://www.cnblogs.com/ylHeyden/p/7544373.html

 

欢迎关注我的个人技术公众号!javascript艺术

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值