美文网首页
Vue快速入门(三:自定义指令)《快乐Vue》

Vue快速入门(三:自定义指令)《快乐Vue》

作者: Negen | 来源:发表于2019-02-26 11:40 被阅读0次

    自定义指令

    除了内置指令外,Vue.js 也提供了方法让我们可以注册自定义指令,以便封装对 DOM元素的重的处理行为,提高代码复用率。

    指令注册及定义对象

    通过 Vue.directive(id, definition) 注册一个全局的自定义指令,接收参数 id 和定义的对象。
    id:指令的而唯一标识。
    definition:指令的相关属性及钩子函数。
    我们在注册指令的同时,可以传入 definition 定义对象,对指令赋予一些特殊的功能。这个定义对象主要包含三个钩子函数:bind、 update 和 unbind。
    bind:指令第一次绑定到元素上时调用,只调用一次。
    update:指令在bind之后以初始值为参数进行第一次调用,之后每次当绑定的值发生变化时被调用,update接收到的参数为newValue和oldValue。
    示例:

    <!DOCTYPE html>
    <html>
    <head>
        <title>v-diycommand</title>
        <meta charset="utf-8">
    </head>
    <!-- 引入vue.js -->
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    
    <body>
    <div id="app">
        <div v-globaldirective="arg"></div>
        <div v-globaldirective2></div>
    </div>
    
    <script type="text/javascript">
    Vue.directive('globaldirective', {
        bind: function () {
            console.log("调用了====>bind")
            console.log("bind", arguments)
        },
        update: function (newValue, oldValue) {
            alert("调用了====>update")
            console.log("update", newValue, oldValue)
        },
        unbind: function () {
            console.log("调用了====>unbind")
            console.log("unbind", arguments)
        }
    })
    
    Vue.directive('globaldirective2', function(){
        alert("调用了====>globaldirective2")
    })
    
    var vm = new Vue({
        el: "#app",
        data:{
            arg: "mydirective"
        }
    });
    
    </script>
    </body>
    </html>
    

    控制台修改arg的值,即可触发update

    相关文章

      网友评论

          本文标题:Vue快速入门(三:自定义指令)《快乐Vue》

          本文链接:https://www.haomeiwen.com/subject/xdqayqtx.html