• Vue 自定义指令


    自定义指令

    1. 为何需要自定义指令?

      内置指令不满足需求

    2. 自定义指令的语法规则(获取元素焦点)

    Vue.directive('focus' {
        inserted: function(el) {  // 获取元素的焦点 el.focus();
        }
    }) 
    

    3.自定义指令用法

    <input type="text" v-focus>
    

    例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <div id="app">
        <input type="text" v-focus>
        <input type="text">
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        /*
          自定义指令
        */
        Vue.directive('focus', {
          inserted: function(el){
            // el表示指令所绑定的元素
            el.focus();
          }
        });
        var vm = new Vue({
          el: '#app',
          data: {
            
          },
          methods: {
            handle: function(){
              
            }
          }
        });
      </script>
    </body>
    </html>
    

    4. 带参数的自定义指令(改变元素背景色)

    Vue.directive(‘color', {
        inserted: function(el, binding) {
             el.style.backgroundColor = binding.value.color;
        }
    })
    

    5. 指令的用法

    <input type="text" v-color='{color:"orange"}'>
    

    例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <div id="app">
        <input type="text" v-color='msg'>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        /*
          自定义指令-带参数
        */
        Vue.directive('color', {
          bind: function(el, binding){
            // 根据指令的参数设置背景色
            // console.log(binding.value.color)
            el.style.backgroundColor = binding.value.color;
          }
        });
        var vm = new Vue({
          el: '#app',
          data: {
            msg: {
              color: 'blue'
            }
          },
          methods: {
            handle: function(){
              
            }
          }
        });
      </script>
    </body>
    </html>
    
    

    5. 局部指令

    directives: {
       focus: { // 指令的定义
            inserted: function (el) {
                el.focus()
            }
        }
    }
    

    例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <div id="app">
        <input type="text" v-color='msg'>
        <input type="text" v-focus>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        /*
          自定义指令-局部指令
        */
        var vm = new Vue({
          el: '#app',
          data: {
            msg: {
              color: 'red'
            }
          },
          methods: {
            handle: function(){
    
            }
          },
          directives: {
            color: {
              bind: function(el, binding){
                el.style.backgroundColor = binding.value.color;
              }
            },
            focus: {
              inserted: function(el) {
                el.focus();
              }
            }
          }
        });
      </script>
    </body>
    </html>
    
    

    本文来自博客园,作者:一纸年华,转载请注明原文链接:https://www.cnblogs.com/nullcodeworld/p/15337407.html

  • 相关阅读:
    接口的基本语法
    包和访问权限(三)
    包和访问权限(二)
    包和访问权限(一)
    为什么用抽象类
    html5,单击显示详细信息
    html5,格式的验证
    html5,加密元素
    html5,新增的元素,fieldset legend
    html5,进度条
  • 原文地址:https://www.cnblogs.com/nullcodeworld/p/15337407.html
Copyright © 2020-2023  润新知