面向物件的學生管理系統(Python實現)
阿新 • • 發佈:2020-11-21
全域性指令
使用directive
註冊全域性指令,我們自定義了指令v-focus
:、
<div id="app"> <p>頁面載入時,input 元素自動獲取焦點:</p> <input v-focus> </div> <script> // 註冊一個全域性自定義指令 v-focus Vue.directive('focus', { // 當繫結元素插入到 DOM 中。 inserted: function (el) { // 聚焦元素 el.focus() } }) // 建立根例項 new Vue({ el: '#app' }) </script>
區域性指令
在Vue
例項中使用directives
選項來註冊區域性指令,這樣指令只能在這個例項中使用:
<div id="app"> <p>頁面載入時,input 元素自動獲取焦點:</p> <input v-focus> </div> <script> // 建立根例項 new Vue({ el: '#app', directives: { // 註冊一個區域性的自定義指令 v-focus focus: { // 指令的定義 inserted: function (el) { // 聚焦元素 el.focus() } } } }) </script>
指令鉤子
在一個指令中,你可以指定下面的鉤子函式,如上述兩個示例中都具有inserted
函式。
鉤子函式 | 描述 |
---|---|
bind() | 只調用一次,指令第一次繫結到元素時呼叫,用這個鉤子函式可以定義一個在繫結時執行一次的初始化動作 |
inserted() | 被繫結元素插入父節點時呼叫(父節點存在即可呼叫,不必存在於 document 中) |
update() | 被繫結元素所在的模板更新時呼叫,而不論繫結值是否變化。通過比較更新前後的繫結值,可以忽略不必要的模板更新 |
componentUpdated() | 被繫結元素所在模板完成一次更新週期時呼叫 |
unbind() | 只調用一次, 指令與元素解綁時呼叫 |
鉤子引數
每個鉤子函式都有兩個常用引數,分別是el
和binding
。
el
代表DOM
節點本身,即元素。
binding
是一個指令物件,含有如下屬性:
屬性 | 描述 |
---|---|
name | 指令名,不包含v-字首 |
value | 指令的繫結值,如v-my-directive="1+1",則value是2 |
oldValue | 指令繫結的前一個值,僅在 update和 componentUpdated鉤子中可用。無論值是否改變都可用。 |
expression | 繫結值的表示式或變數名。 例如 v-my-directive="1 + 1,expression 的值是“1 + 1”。 |
arg | 傳給指令的引數。例如 v-my-directive:foo, arg 的值是 "foo" |
modifiers | 一個包含修飾符的物件。 例如: v-my-directive.foo.bar, 修飾符物件modifiers的值是 { foo: true, bar: true } |
除此之外,還有兩個不太常用的引數,如下:
vnode
:Vue
編譯生成的虛擬節點。
oldValue
:上一個虛擬節點,僅在 update
和 componentUpdated
鉤子中可用。
指令簡寫
如果你的指令只包含inserted
鉤子函式,則可以進行簡寫:
v-rounoob="{color:'red'}"
Vue.directive('runoob', function (el, binding) {
// 設定指令的背景顏色
el.style.backgroundColor = binding.value.color
})