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