91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Vue中的自定義指令是什么

發布時間:2020-12-09 10:09:14 來源:億速云 閱讀:189 作者:小新 欄目:編程語言

小編給大家分享一下Vue中的自定義指令是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

除了默認設置的核心指令( v-modelv-show ),Vue 也允許注冊自定義指令。在Vue里,代碼復用的主要形式和抽象是組件。然而,有的情況下,仍然需要對純 DOM 元素進行底層操作,這時候就會用到自定義指令。

指令注冊

  以一個input元素自動獲得焦點為例,當頁面加載時,使用autofocus可以讓元素將獲得焦點 。但是autofocus在移動版Safari上不工作。現在注冊一個使元素自動獲取焦點的指令

  指令注冊類似于組件注冊,包括全局指令和局部指令兩種

【全局指令】

  使用Vue.diretive()來全局注冊指令

// 注冊一個全局自定義指令 v-focusVue.directive('focus', {  // 當綁定元素插入到 DOM 中。
  inserted: function (el) {    // 聚焦元素    el.focus()
  }
})

【局部指令】

  也可以注冊局部指令,組件或Vue構造函數中接受一個 directives 的選項

var vm = new Vue({
  el: '#example',
  directives:{
    focus:{
      inserted: function (el) {
        el.focus()
      }      
    }
  }

})

  然后可以在模板中任何元素上使用新的 v-focus 屬性

<p id="example">
  <input v-focus></p>
<script>// 注冊一個全局自定義指令 v-focusVue.directive('focus', {  // 當綁定元素插入到 DOM 中。  inserted: function (el) {    // 聚焦元素    el.focus()
  }
})var vm = new Vue({
  el: '#example',

})</script>

Vue中的自定義指令是什么

鉤子函數

  指令定義函數提供了幾個鉤子函數(可選)

【bind】

  只調用一次,指令第一次綁定到元素時調用,用這個鉤子函數可以定義一個在綁定時執行一次的初始化動作

【inserted】

  被綁定元素插入父節點時調用(父節點存在即可調用,不必存在于 document 中)

【update】

  所在組件的 VNode 更新時調用,但是可能發生在其孩子的 VNode 更新之前。指令的值可能發生了改變也可能沒有。但是可以通過比較更新前后的值來忽略不必要的模板更新

【componentUpdated】

  所在組件的 VNode 及其孩子的 VNode 全部更新時調用

【unbind】

  只調用一次, 指令與元素解綁時調用

鉤子函數參數

  鉤子函數被賦予了以下參數

【el】

  指令所綁定的元素,可以用來直接操作 DOM

【binding】

  一個對象,包含以下屬性:

name: 指令名,不包括 v- 前綴。
value: 指令的綁定值, 例如: v-my-directive="1 + 1", value 的值是 2。
oldValue: 指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
expression: 綁定值的字符串形式。 例如 v-my-directive="1 + 1" , expression 的值是 "1 + 1"。
arg: 傳給指令的參數。例如 v-my-directive:foo, arg 的值是 "foo"。
modifiers: 一個包含修飾符的對象。 例如: v-my-directive.foo.bar, 修飾符對象 modifiers 的值是 { foo: true, bar: true }。

【vnode】

  Vue 編譯生成的虛擬節點

【oldVnode】

  上一個虛擬節點,僅在 updatecomponentUpdated 鉤子中可用

  [注意]除了 el 之外,其它參數都是只讀的,盡量不要修改他們。如果需要在鉤子之間共享數據,建議通過元素的 dataset 來進行

  下面是一個使用了這些參數的自定義鉤子樣例

<p id="example" v-demo:foo.a.b="message"></p>
<script>Vue.directive('demo', {
  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 keys: ' + Object.keys(vnode).join(', ')
  }
})new Vue({
  el: '#example',
  data: {
    message: 'hello!'
  }
})</script>

Vue中的自定義指令是什么

【函數簡寫】

   大多數情況下,可能想在bindupdate鉤子上做重復動作,并且不想關心其它的鉤子函數。可以這樣寫:

Vue.directive('color-swatch', function (el, binding) {
  el.style.backgroundColor = binding.value
})

【對象字面量】

  如果指令需要多個值,可以傳入一個JS對象字面量。指令函數能夠接受所有合法類型的JS表達式

<p v-demo="{ color: 'white', text: 'hello!' }"></p>
Vue.directive('demo', function (el, binding) {
  console.log(binding.value.color) // => "white"
  console.log(binding.value.text)  // => "hello!"
})

以上是“Vue中的自定義指令是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

凭祥市| 邢台市| 咸宁市| 福贡县| 久治县| 平邑县| 乌拉特中旗| 长顺县| 调兵山市| 汶川县| 松桃| 运城市| 金乡县| 宁武县| 长春市| 义乌市| 龙南县| 海阳市| 莒南县| 永安市| 惠州市| 丁青县| 凤翔县| 华亭县| 自治县| 梅州市| 太谷县| 宜宾市| 揭东县| 高清| 西吉县| 赤水市| 金乡县| 靖宇县| 芦山县| 沂源县| 察隅县| 牡丹江市| 平罗县| 天津市| 宿松县|