写篇文章之必须马上精通vue——(10)v-自定义指令

773 阅读1分钟

v-指令确实是Vue的特色的语法,但是我们日常开发还是存在对所用技术的二次开发封装,所以我们需要知道v-自定义指令的知识。

v-自定义指令

directives属性负责注册自定义v-指令,除了在组件实例中使用,还可以全局使用。

我们先讲局部的注册,最后讲全局的使用。

自定义指令结构

我们在组件实例中注册自定义v-指令:

        new Vue({
            el:'#app',
            data:{
                msg:'----',
            },
            directives: {
                //v-kkk指令,指令定义对象
                kkk: {
                    inserted: function () {
                        console.log("欸嘿!")
                    }
                }
            }
        });

这下我们可以在el绑定的节点结构(或则模板中)中使用自定义指令:

    <div id="app">
        <div v-kkk></div>
    </div>

自定义指令钩子函数

你发现自定义指令中出现了inserted属性,其实是钩子函数,而且不止一个。

指令定义对象的钩子函数有:(官方)

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。
  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。
  • unbind:只调用一次,指令与元素解绑时调用。

常用inserted钩子进行开发。

钩子函数参数

钩子函数的有默认传入的参数elbindingvnode 和 oldVnode