vue 自定義指令篇
對於vue的指令,有我們熟悉的v-model、v-show等,但我們也可以自己定義我們需要的指令,如比較常用的v-lazy懶載入
官方詳細文件:
通過directive就可以在vue上註冊指令
// 註冊乙個全域性自定義指令 `v-focus`
vue.directive('focus',
})
乙個指令定義物件可以提供如下幾個鉤子函式 (均為可選):
bind:只呼叫一次,指令第一次繫結到元素時呼叫。在這裡可以進行一次性的初始化設定。
inserted:被繫結元素插入父節點時呼叫 (僅保證父節點存在,但不一定已被插入文件中)。
update:所在元件的 vnode 更新時呼叫,但是可能發生在其子 vnode 更新之前。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前後的值來忽略不必要的模板更新 (詳細的鉤子函式引數見下)。
componentupdated:指令所在元件的 vnode 及其子 vnode 全部更新後呼叫。
unbind:只呼叫一次,指令與元素解綁時呼叫。
指令模組化
比如我們熟悉的v-show,不看原始碼,我們分析v-show這個指令的功能,v-show="true || false"顯示或者因此節點,但元素不佔據其本來的空間。因此這可以通過我們常用的display="none"一樣
我們的想法是註冊乙個指令,通過給鉤子函式傳遞引數true 或 false去改變節點的display的值
// 元素隱藏顯示指令
export default ,
// 被繫結元素插入父節點時呼叫
inserted (el, binding, vnode) ,
// 所在元件的 vnode 更新時呼叫
update (el, binding, vnode) ,
// 指令所在元件的 vnode 及其子 vnode 全部更新後呼叫
componentupdated (el, binding, vnode) ,
unbind (el, binding, vnode)
}
指令模組化,通過index.js管理自定義指令。新增新指令只需在modules中加入模組,並引入
index.js
import stealth from './modules/stealth'
export
全域性vue中通過directive繫結全部指令
mian.js
import * as directives from './directives'
// 註冊指令
object.keys(directives).foreach(k => vue.directive(k, directives[k]))
業務元件中,加入v-*(指令名)
我們成功完成自定義指令的模組化 Vue自定義指令
vue有很多內建的指令,比如說v on,v model,v clock等等,每乙個指令會完成一定的功能,但是這些內建的指令總會有些侷限性,要是能夠自定義指令就好了 vue的自定義指令分類 全域性指令和區域性指令 vue指令的定義和用法 以全域性指令為例 1.語法 vue.directive 指令id...
vue自定義指令
自定義指令主要有兩種方式。一是在元件裡以directives的選項來自定義指令的內容。這樣的自定義指令是區域性的自定義指令,只在當前的元件裡面才能使用。script export default directives arr arr.join el.style.csstext arr script ...
VUE 自定義指令
dom插入便獲取焦點 vue.directive focus 根據指令的值決定自否獲取焦點 vue.directive focus 注 被拖拽的元素必須有定位樣式 vue.directive drag function el,binding document.nm useup function 拓展...