vue2中的directives

directives: 用于自定義vue指令

注冊全局自定義指令:調(diào)directive(id, fun)

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

注冊局部自定義指令:在組件中定義, 是一個directives對象

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

directives的鉤子函數(shù)

  • bind: 只調(diào)用一次,指令第一次綁定到元素時調(diào)用。在這里可以進行一次性的初始化設置。

  • inserted: 被綁定元素插入父節(jié)點時調(diào)用 (僅保證父節(jié)點存在,但不一定已被插入文檔中)。

  • update: :所在組件的 VNode 更新時調(diào)用,但是可能發(fā)生在其子 VNode 更新之前。指令的值可能發(fā)生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新 (詳細的鉤子函數(shù)參數(shù)見下)。

  • componentUpdated: 指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。

  • unbind: 只調(diào)用一次,指令與元素解綁時調(diào)用。

鉤子函數(shù)的參數(shù):

  • el: 指令所綁定的元素, 用來直接操作dom
  • binding: 一個對象包含以下屬性:
    1 name: 指令名, 不包括v- 前綴
    2 value: 指令綁定的值
    3 oldValue:指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
    4 expression:字符串形式的指令表達式。例如 v-my-directive="1 + 1" 中,表達式為 "1 + 1"。
    5 arg:傳給指令的參數(shù),可選。例如 v-my-directive:foo 中,參數(shù)為 "foo"。
    6 modifiers:一個包含修飾符的對象。例如:v-my-directive.foo.bar 中,修飾符對象為 { foo: true, bar: true }。
  • vnode:Vue 編譯生成的虛擬節(jié)點。移步
    來了解更多詳情。
  • oldVnode:上一個虛擬節(jié)點,僅在
    updatecomponentUpdated鉤子中可用。

除了el 之外,其它參數(shù)都應該是只讀的,切勿進行修改。如果需要在鉤子之間共享數(shù)據(jù),建議通過元素的dataset 來進行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容