vue的自定义指令

    xiaoxiao2022-07-07  156

    自定义指令

    自定义指令分为全局注册,和局部注册 参考官网api:https://cn.vuejs.org/v2/guide/custom-directive.html

    //全局注册 Vue.directive('focus',{ //指令选项 }) //局部注册 var app= new Vue({ el:'#app', directives:{ focus:{ //指令选项 } } })

    钩子函数

    一个指令定义对象可以提供如下几个钩子函数 (均为可选):

    bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

    inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

    update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

    componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

    unbind:只调用一次,指令与元素解绑时调用

    钩子函数参数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0"> <title>Title</title> <script src="js/vue.js"></script> </head> <body> <div id="app"> <span v-hello="color3">{{message}}</span> <button @click="add"> 点击开始加1</button> <button onclick="jiebang()">解绑</button> </div> </body> <script src="https://unpkg.com/vue/dist/vue.min.js"></script> <script> function jiebang() { app.$destroy(); } Vue.directive("hello", { bind: function(el, bingind, vnode) { console.log(bingind.value+"============") el.style["color"] = bingind.value; console.log("1-bind"); }, inserted: function() { console.log("2-insert");zi }, update: function() { console.log("3-update"); }, componentUpdated: function() { console.log('4 - componentUpdated'); }, unbind: function() { console.log('5 - unbind'); } }) var app = new Vue({ el: "#app", data: { message: 10, color3: "balck" }, methods: { add: function() { this.message++; } } }) </script> </html>

    运行截图

    最新回复(0)