https://v2.cn.vuejs.org/v2/guide/custom-directive.html
<div v-example:foo.bar="baz">
vue 自定義指令的鉤子
bind
: 當 v-XXX 指令綁定到節點上時 觸發inserted
:被綁定元素插入父節點時調用update
:所在組件的 VNode 更新時調用
指令鉤子函數會被傳入以下參數:
el
:指令所綁定的元素,可以用來直接操作 DOMbinding
:一個對象,包含以下 property:name
:指令名,不包括v-
前綴。arg
:傳遞給指令的參數 (如果有的話)。例如在v-my-directive:foo
中,參數是"foo"
。value
:指令的綁定值,例如:v-my-directive="1 + 1"
中,綁定值為2
。instance
:使用該指令的組件實例。
- …
使用方法:
-
創建一個 js 文件
-
export default {// bind鉤子 當 v-XXX 指令綁定到節點上時 觸發bind (el) {el.oninput = () => {console.log('1', el)// 正則let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");// 將正則匹配到的字符,替換成 '' 賦予輸入框節點的值el.children[0].value = el.children[0].value.replace(pattern, '');};} }
-
-
vue 文件中,import 引入文件
-
并在 directives 中定義
-
directives: {limitInput }
-
-
在輸入框上使用:
<el-input v-model="name" v-limit-input></el-input>
將一個自定義指令全局注冊: 在main.js寫
// 使 v-focus 在所有組件中都可用
app.directive('focus', {/* ... */
})
](https://v2.cn.vuejs.org/v2/guide/custom-directive.html)
<div v-example:foo.bar="baz">
vue 自定義指令的鉤子
bind
: 當 v-XXX 指令綁定到節點上時 觸發inserted
:被綁定元素插入父節點時調用update
:所在組件的 VNode 更新時調用
指令鉤子函數會被傳入以下參數:
el
:指令所綁定的元素,可以用來直接操作 DOMbinding
:一個對象,包含以下 property:name
:指令名,不包括v-
前綴。arg
:傳遞給指令的參數 (如果有的話)。例如在v-my-directive:foo
中,參數是"foo"
。value
:指令的綁定值,例如:v-my-directive="1 + 1"
中,綁定值為2
。instance
:使用該指令的組件實例。
- …
使用方法:
-
創建一個 js 文件
-
export default {// bind鉤子 當 v-XXX 指令綁定到節點上時 觸發bind (el) {el.oninput = () => {console.log('1', el)// 正則let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");// 將正則匹配到的字符,替換成 '' 賦予輸入框節點的值el.children[0].value = el.children[0].value.replace(pattern, '');};} }
-
-
vue 文件中,import 引入文件
-
并在 directives 中定義
-
directives: {limitInput }
-
-
在輸入框上使用:
<el-input v-model="name" v-limit-input></el-input>
將一個自定義指令全局注冊: 在main.js寫
// 使 v-focus 在所有組件中都可用
app.directive('focus', {/* ... */
})