vue自定義指令

2022-04-09 18:57:58 字數 1956 閱讀 1966

v-else,v-show,v-for等。這些都是官方直接給定的,另外vue也允許註冊自定義指令,有時這很有用。

自定義乙個指令很簡單,官網給出乙個簡單的例子,自定義乙個聚焦指令v-focus:

//

註冊乙個全域性自定義指令 `v-focus`

vue.directive('focus',

})

上面幾行**就全域性註冊了乙個指令並可以執行,當給乙個輸入框加上這個指令時,頁面載入就會使該框獲得焦點。

說明:'focus':如你所見,是指令的名稱,不帶v-字首;

inserted:這是乙個鉤子函式,表示被繫結元素插入父節點時呼叫,指令定義函式提供了多個鉤子函式,下面再介紹。

另外,你也可以區域性註冊指令,元件中也接受乙個 directives 的選項:

directives: 

}}

指令定義函式提供了幾個鉤子函式(可選)

他們中每乙個都有相同的三個引數:el,binding和vnode,在update和componentupdated中,還會有引數oldvnode,以區分傳遞的舊值和新值。

注意:除了 el 之外,其它引數都應該是唯讀的。

其中,你注意到binding引數中有多個屬性,要搞清楚他們分別代表了什麼,這很重要。

<

div

id>

<

p v-demo:foo.a.b

="message"

>

p>

div>

vue.directive('demo',;

value:$;

expression:$;

argument:$;

modifiers:$;`}

});new

vue(

});

結果:

name:demo; //

指令名,不包括 v- 字首

value:hello; //

指令的繫結值

expression:message; //

字串形式的指令表示式

argument:foo; //

傳給指令的引數,可選。

modifiers:; //

乙個包含修飾符的物件。

還有乙個oldvalue是指令繫結的前乙個值,僅在 update 和 componentupdated 鉤子中可用。無論值是否改變都可用。

到這裡,你可能有點糊塗了,東西看起來有點多,其實並不是,你只是不熟悉。這些官網介紹的很清楚,你需要的是乙個更具體的例子。

vue.directive('position',

});

<

div

id>

<

p v-position

='100'

>我距離頂部100px

p>

div>

現在v-position只能控制到頂部的距離,我們還可以自由控制方向:

<

p v-position:left

='50'

>我距離左側50px

p>

vue.directive('position',

});

另外,你還可以控制多個值:

<

p v-position

="">我距離左側50px,距離頂部100px

p>

vue.directive('position',

});

這就是vue自定義指令的一些簡單應用,你可以建立出更高階靈活的自定義指令。

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 拓展...