什麼是自定義指令?
除了使用 vue 提供的內建指令之外,我們可以自定義一些自己的指令
什麼時候需要自定義指令?
當需要不可避免的操作 dom 的時候,使用自定義指令來解決
如何註冊和使用自定義指令?
一、註冊
1 . 全域性註冊,在任何元件中都可以使用全域性註冊自定義指令
2 . 區域性註冊,只能在當前元件使用該指令
3 . 如果需要在多個不同的元件中使用該指令,則把它定義為全域性的
4 . 非通用的,不需要多次使用的指令我們定義到區域性—— 到底是否通用取決於你的功能業務
二、 使用
eg:註冊乙個全域性自定義指令v-focus
vue.directive(『指令名稱』, )
第二個引數就是需要配置指令的生命鉤子函式
指令是可以傳值的。什麼意思呢?例如 v-show=「布林值」
vue.
directive
('focus',,
// 被繫結元素插入父節點時呼叫 (僅保證父節點存在,但不一定已被插入文件中)。
// 如果你需要操作作用指令的父元素,則最起碼寫到這個 inserted 中
inserted
(el)
,update()
,componentupdated()
,unbind()
})
模擬 v-show 實現,根據值的真假來顯示或者隱藏作用該指令的元素
vue.
directive
('my-show'
, else },
inserted
(el, binding)
else},
// 緊接著我們發現 update 和 componentupdated 只有在指令的繫結的值發生更新的時候才會觸發
update
(el, binding)
else},
componentupdated
(el, binding)
,unbind()
})
update 和 componentupdated 的區別是:
inserted:表示元素 插入到dom中的時候,會執行 inserted 函式【觸發1次】
update:當vnode更新的時候,會執行 updated, 可能會觸發多次
關於函式簡寫,直接繫結到bind 與 update
// 自定義全域性指令 v-focus,為繫結的元素自動獲取焦點:
vue.directive('focus',
});// 在元素 剛繫結了指令的時候,還沒有 插入到 dom中去,這時候,呼叫 focus 方法沒有作用
// 因為,乙個元素,只有插入dom之後,才能獲取焦點
// el.focus()
// 樣式只要通過指令繫結給了元素,不管這個元素有沒有被插入到頁面中去,這個元素肯定有了乙個內聯的樣式
// 將來元素肯定會顯示到頁面中,這時候,瀏覽器的渲染引擎必然會解析樣式,應用給這個元素
// 自定義區域性指令 v-color 和 v-font-weight,為繫結的元素設定指定的字型顏色 和 字型粗細:
directives:
},'font-weight': function (el, binding2)
}
Vue 自定義指令 鉤子函式
除了核心功能缺省內置的指令,vue也允許註冊自定義指令 頁面載入後,讓文字框自動獲取焦點,原生js做法是獲取文字框元素後呼叫focus 方法,但vue不建議手動操作dom元素,所以此時要自定義指令 這裡需要注意的是v on指令繫結focus事件的方式是實現不了上面需求的,區別就像onfocus和fo...
VUE自定義指令鉤子函式講解
除了vue 內建指令外,vue也支援我們自定義註冊指令,分為區域性和全域性註冊 但這些想必大家都不陌生,其中官方api也是寫的明明白白 官方api點這裡 而且自定義指令也會極大程度上幫助我們日常的程式設計,但這是很有意思的事情出現了,就是鉤子函式,很多老鐵都弄不明白這五個函式的具體區別 contai...
自定義指令(鉤子函式)
自定義指令 指令是個函式 物件,用來操作dom的,裡面的this 返回window a 全域性 vue.directive 指令名不帶v 函式 el,binding el 使用指令的dom元素 binding 是個物件 含有傳入的 引數 binding.value b 區域性 定義在選項裡面 dir...