vue中的自定义指令

定义组件的为directives:{}

1、函数形式 (element,binding)

1----element:真实的dom元素

2----binding:将元素和自己所写的指令进行绑定

函数何时被调用?

1、指令和元素成功绑定时被调用一次

2、指令所在模板被重新解析的时候(模板的数据发生改变时)

 <div id="app">
        <h3>当前n的值是{{n}}</h3>
        <h3 >放大十倍后n的值是:<span v-big="n"></span></h3>
        <button @click="n++">点我+1</button>
    </div>
    <script>
        new Vue({
            el:"#app",
            data:{
                n:1
            },
            directives:{
                //big()第一个参数是绑定的真实dom元素,第二个参数将元素和自己所写的指令进行绑定
                //注:big函数何时被调用?
                    //指令和元素成功绑定时会被调用一次
                    //指令所在的模板重新解析时(模板中的数据发生改变时)
                big(element,binding){
                  element.innerText = binding.value * 10
                  console.log(element,binding)
                }
            }
        })

2、对象形式

对象形式里面一共有三个函数

1、bind(element,binding):指令与元素成功绑定时被调用

2、inserted(element,binding):指令所在元素被插入页面时被调用

3、update(element,binding):指令所在模板被重新解析时

注:其实函数形式就是对象形式省略inserted的简写形式

  new Vue({
            el:'#app',
            data:{
                n:1
            },
            directives:{
                //函数写法其实就是对象的写法省略了inserted这个函数;
                //指令与元素成功绑定时被调用
                fbind:{
                   bind(element,binding){
                     element.value = binding.value
                   },
                   //指令所在元素插入页面时被调用
                   inserted(element,binding){
                    element.focus()
                   },
                   //指令所在模板进行重新解析时被调用
                   updated() {
                    element.value = binding.value
                   },

                }
            }
        })

自定义指令的注意事项

1、自定义指令的写法不能使用驼峰法,且vue模板中的函数名不能写简写形式了,需要加“”

2、directives中的this全部都是window

3、上述在vue的directives中写的自定义指令都是局部的,不能被其他的组件使用,要使用的话,需要写全局的自定义组件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值