亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue自定義指令的創建和使用方法實例分析

發布時間:2020-09-13 14:21:42 來源:腳本之家 閱讀:173 作者:匿名的girl 欄目:web開發

本文實例講述了vue自定義指令的創建和使用方法。分享給大家供大家參考,具體如下:

一、自定義指令的創建和使用

Vue自帶的指令很多,v-for/v-if/v-else/v-else-if/v-model/v-bind/v-on/v-show/v-html/v-text...
但是這些指令都是比較偏向于工具化,有些時候在實現具體的業務邏輯的時候,發現不夠用,如何來自定義指令.

1、自定義指令

① 創建

new Vue({
  directives:{
    change:{
      bind:function(){},
      update:function(){},
      unbind:function(){}
    }
  }
})

在自定義指令時,在指令對應的配置對象中有3個處理函數指令對應的操作

bind
  指令在綁定到元素要執行的操作
update
  如果在調用指令時候,傳了參數,當參數變化時候,就會執行update所指定的方法
unbind
  解綁要執行的操作

② 使用自定義指令

directives:{
  hello:{
    bind:function(){},
    update:function(){},
    unbind:function(){}
  }
}

使用:

v-hello

注意事項:

建議在給指令的命名采用小駝峰式的命名方式,比如changeBackgroundColor,在使用的時候,采用烤串式寫法 v-change-background-color

(方法:參數,返回值)

bind方法以及update方法 都是有參數的,
一個是el,對應的是調用指令的元素
一個bindings,是一個對象:name/rawName/value/oldValue...

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
  <title>www.jb51.net vue自定義指令</title>
</head>
<body>
<div id="container">
  <p>{{msg}}</p>
  <!-- 準備實現需求:
  在h2標簽上面,加上一個按鈕,當點擊按鈕時候,對count實現一次
  自增操作,當count等于5的時候,在控制臺輸出‘it is a test'
  -->
  <button @click="handleClick">clickMe</button>
  <h2
      v-if="count < 6"
      v-change="count">it is a custom directive</h2>
</div>
<script>
  //directive
  new Vue({
    el: '#container',
    data: {
      msg: 'Hello Vue',
      count:0
    },
    methods:{
      handleClick: function () {
        //按鈕單擊,count自增
        this.count++;
      }
    },
    directives:{
      change:{
        bind: function (el,bindings) {
          console.log('指令已經綁定到元素了');
          console.log(el);
          console.log(bindings);
          //準備將傳遞來的參數
          // 顯示在調用該指令的元素的innerHTML
          el.innerHTML = bindings.value;
        },
        update: function (el,bindings) {
          console.log('指令的數據有所變化');
          console.log(el);
          console.log(bindings);
          el.innerHTML = bindings.value;
          if(bindings.value == 5)
          {
            console.log(' it is a test');
          }
        },
        unbind: function () {
          console.log('解除綁定了');
        }
      }
    }
  })
</script>
</body>
</html>

使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試,可得到如下運行效果:

vue自定義指令的創建和使用方法實例分析

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
  <title>www.jb51.net vue自定義指令</title>
</head>
<body>
<div id="container">
  <p>{{msg}}</p>
  <h2 v-change-background-color="myBgColor">
    it is a header1
  </h2>
</div>
<script>
  new Vue({
    el: '#container',
    data: {
      msg: 'Hello Vue',
      myBgColor:'#ff0000'
    },
    directives:{
      changeBackgroundColor:{
        bind: function (el,bindings) {
          console.log('in bind ');
          console.log(bindings.value);
          el.style.backgroundColor = bindings.value;
        }
      }
    }
  })
</script>
</body>
</html>

使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試,可得到如下運行效果:

vue自定義指令的創建和使用方法實例分析

<h5 v-change-background-color="'red'">背景色</h5>這樣也是可以的,但是寫死了,不好

希望本文所述對大家vue.js程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

礼泉县| 康马县| 岑巩县| 达尔| 台北市| 沙河市| 托克托县| 新蔡县| 鄂尔多斯市| 岳池县| 将乐县| 黄平县| 平谷区| 阜宁县| 汶川县| 新营市| 达拉特旗| 松原市| 郯城县| 松滋市| 拉萨市| 沁水县| 内丘县| 陇西县| 靖边县| 临高县| 原平市| 浑源县| 腾冲县| 磐石市| 舒兰市| 平果县| 石台县| 花莲县| 鄂州市| 朝阳区| 渭南市| 鹿泉市| 天门市| 镇远县| 汽车|