zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    别再为了this发愁了:JS中的this机制
    专为控制打印设计的CSS样式
    怎样用纯HTML和CSS更改默认的上传文件按钮样式
    将HTML转成XHTML并清除一些无用的标签和属性
    JavaScript中textRange对象使用方法总结
    DIV+CSS规范命名集合
    JS条件判断
    CSS只是进化的一部分
    25 个超棒的 HTML5 & JavaScript 游戏引擎开发库
    开发一个完整的JavaScript组件
  • 原文地址:https://www.cnblogs.com/nullcodeworld/p/15337407.html
Copyright © 2011-2022 走看看