指令本質上是裝飾器,是vue對html元素的擴充套件,給html元素增加自定義功能,語義化html標籤。vue編譯dom時,會執行與指令關聯的js**,即找到指令物件,執行指令物件的相關方法。
自定義指令有五個生命週期(也叫鉤子函式),分別是bind、inserted、update、componentupdated、unbind
bind:只呼叫一次,指令第一次繫結到元素時呼叫,用這個鉤子函式可以定義乙個繫結時執行一次的初始化動作。
inserted:被繫結元素插入父節點時呼叫(父節點存在即可呼叫,不必存在於document中)。
update:被繫結於元素所在的模板更新時呼叫,而無論繫結值是否變化。通過比較更新前後的繫結值,可以忽略不必要的模板更新。
componentupdated:被繫結元素所在模板完成一次更新週期時呼叫。
unbind:只呼叫一次,指令與元素解綁時呼叫。
原始碼
// 版本2.6.10
export
default
}function
updatedirectives
(oldvnode: vnodewithdata, vnode: vnodewithdata)
}function
_update
(oldvnode, vnode)
}else}}
if(dirswithinsert.length)}if
(iscreate)
else}if
(dirswithpostpatch.length)})
}// 先判斷當前虛擬節點是否是新建立if(
!iscreate)}}
}const emptymodifiers = object.
create
(null
)function
normalizedirectives
( dirs:
?array
, vm: component):
let i, dir
for(i =
0; i < dirs.length; i++
) res[
getrawdirname
(dir)
]= dir
dir.def =
resolveasset
(vm.$options,
'directives'
, dir.name,
true)}
return res
}function
getrawdirname
(dir: vnodedirective)
: string .$
).join('.')}`
}function
callhook
(dir, hook, vnode, oldvnode, isdestroy)
catch(e
)$hook`)}
}}
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 拓展...