VUE DAY3 自定義指令

vue除了提供一些核心指令,還允許使用者自定義屬性。
一般使用vue時(shí)不建議直接對(duì)DOM進(jìn)行操作,但有的時(shí)候仍然需要對(duì)普通DOM元素進(jìn)行底層操作,這時(shí)候就要用到自定義屬性了。
(在需要操作DOM的時(shí)候,考慮是否需要使用指令來實(shí)現(xiàn))

Vue.directive('指令名稱', {
  //配置參數(shù)

  //只會(huì)調(diào)用一次,當(dāng)指令綁定到當(dāng)前元素上時(shí)使用
  bind([el, binding]){}, 

  //當(dāng)元素被插入到父節(jié)點(diǎn)的時(shí)候使用(渲染時(shí))
  inserted([el, binding]){},

  //當(dāng)指令對(duì)應(yīng)的數(shù)據(jù)發(fā)生改變時(shí)
  update([el, binding]),

  //在所有DOM都更新之后
  componentUpdated([el, binding]){},

  //指令與元素解綁的時(shí)候
  unbind([el, binding]){}
}

自定義指令中的bind, inserted, update, unbind都是鉤子函數(shù),只寫需要使用的就可以了。
鉤子函數(shù)的參數(shù)
el: 當(dāng)前元素
binding:一個(gè)對(duì)象,包含以下屬性:
???? name(binding.name):指令名,不包括 v- 前綴。
???? value(binding.value):指令的綁定值,例如:v-my-directive="1 + 1" 中,綁定值為 2。
???? oldValue:指令綁定的前一個(gè)值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
???? expression:字符串形式的指令表達(dá)式。例如 v-my-directive="1 + 1" 中,表達(dá)式為 "1 + 1"。
???? arg(binding.arg):傳給指令的參數(shù),可選。例如 v-my-directive:foo 中,參數(shù)為 "foo"。
???? modifiers(binding.modifiers):一個(gè)包含修飾符的對(duì)象。例如:v-my-directive.foo.bar 中,修飾符對(duì)象為 { foo: true, bar: true }。

舉個(gè)栗子:

//name: myon
//arg: click
//expression: clickFn
//value: f
<button v-myon:click="clickFn">button</button>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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