vue自定义指令

2018-06-25  本文已影响0人  蠢淡淡不蠢

ue自定义指令

自定义全局指定

自定义可以让表单元素自动获取光标的元素

import Vue from 'vue'

// 全局指令
Vue.directive('focus', {
    inserted(el) { // 被添加进去之后
        el.focus() // 获取光标
    }
})

使用

<input type="text" v-foucs />

自定义局部指令

// 实例或者组件接受一个directives的属性,内部可以添加自定义属性,则为局部指令
directives: {
    focus2: {
        inserted(el) {
            el.focus()
        }
    }
}

使用

<input type="text" v-focus2 />

钩子函数

directives: {
    focus2: {
      
        bind(el, binding, vnode) {
            // 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
            console.log(el);
            console.log(binding);
            console.log(vnode);
            console.log('bind');
        },
        inserted(el) {
            // 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。
            el.focus()
            console.log('inserted');
        },
        update() {
            // 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。
            console.log('update');
        },
        componentUpdated() {
            // 被绑定元素所在模板完成一次更新周期时调用。
            console.log('componentUpdated');
        },
        unbind() {
            // 只调用一次, 指令与元素解绑时调用。
            console.log('unbind');
        }
    }
}

对象字面量

directives: {
    demoo(el, binding) {
        console.log(el); // 获取当前元素 <div></div>
        console.log(binding.value.name); // 获取传递的值 xiaoming
        console.log(binding.value.age); // 获取传递的值 18
      binding.value.a
    },
}

使用

<div v-demoo="{ name: 'xiaoming', age: 18, a: 33 }"></div>
上一篇下一篇

猜你喜欢

热点阅读