美文网首页
Vue.js自定义指令

Vue.js自定义指令

作者: 爱学习的代代 | 来源:发表于2020-06-21 17:53 被阅读0次
    一、指定的定义

    1、指令是指带有v- 前缀的特殊实行,指令用于在表达式的值发生变化时,将某些行为应用到DOM上。

        <p v-if="seen">现在你能看到我了</p>
    ...
    
    data: {
          seen: true
    }
    
    
    
    二、除了Vue框架给出的指令之外,我们还可以自定义指令。
    使用 Vue.directive('指令名', {
      省略的钩子函数等。
    })
    

    完整的代码样例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Vue.js自定义指令</title>
    
        <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    
    </head>
    <body>
    <div id="app" v-peter:hello.a.b="message"></div>
    
    <script>
    
        Vue.directive('peter', {
            bind: function(el, binding, vnode) {
              var s = JSON.stringify
              el.innerHTML = 
              'name: ' + s(binding.name) +  '<br>' +
              'value: ' + s(binding.value) + '<br>' + 
              'expression: ' + s(binding.expression) + '<br>' +
              'argument: ' + s(binding.arg) + '<br>' + 
              'modifiers: ' + s(binding.modifiers) + '<br>' +
              'vnode: ' + Object.keys(vnode).join(', ')
               
            }
        }),
    
        new Vue({
            el: '#app',
            data: {
                message: '代代学vue'
            }
        })
    
    </script>
    
    </body>
    </html>
    

    说明:

    1. peter为声明的指令名
    2. hello 为peter指令的参数,跟随指令之后,以:分割。
    3. a b 为修饰符: 修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。
    4. message 为表达式
    • binding.name 是指令的名 peter
    • binding.value 是表达式的值 代代学vue
    • binding.expression 是表达式 message
    • binding.argument 是指令的参数 hello
    • binding.modifiers: 是包含指令的修饰符的对象。为{ "a": true, "b": true}

    相关文章

      网友评论

          本文标题:Vue.js自定义指令

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