Vue 自定義元件directive使用總結
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title>自定義元件directive</title>
</head>
<body>
<div id="test">
</div>
<script>
/*
1、一個指令定義物件可以提供如下幾個鉤子函式 (均為可選):
bind:只呼叫一次,指令第一次繫結到元素時呼叫。在這裡可以進行一次性的初始化設定。
inserted:被繫結元素插入父節點時呼叫 (僅保證父節點存在,但不一定已被插入文件中)。
update:所在元件的 VNode 更新時呼叫,但是可能發生在其子 VNode 更新之前。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前後的值來忽略不必要的模板更新 。
componentUpdated:指令所在元件的 VNode 及其子 VNode 全部更新後呼叫。
unbind:只呼叫一次,指令與元素解綁時呼叫。
2、接下來我們來看一下鉤子函式的引數 (即 el、binding、vnode 和 oldVnode)。指令鉤子函式會被傳入以下引數:
el:指令所繫結的元素,可以用來直接操作 DOM。
binding:一個物件,包含以下 property:
name:指令名,不包括 v- 字首。
value:指令的繫結值,例如:v-my-directive="1 + 1" 中,繫結值為 2。
oldValue:指令繫結的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
expression:字串形式的指令表示式。例如 v-my-directive="1 + 1" 中,表示式為 "1 + 1"。
arg:傳給指令的引數,可選。例如 v-my-directive:foo 中,引數為 "foo"。
modifiers:一個包含修飾符的物件。例如:v-my-directive.foo.bar 中,修飾符物件為 { foo: true, bar: true }。
vnode:Vue 編譯生成的虛擬節點。
oldVnode:上一個虛擬節點,僅在 update 和 componentUpdated 鉤子中可用。
*/
Vue.directive("focus",{
bind(el,binding){
console.log("bind");
},
inserted(el,binding){
console.log("inserted");
el.focus();
}
})
Vue.component("ComponentA", {
template:`
<div>
這是元件A
<input type="text" v-focus></input>
</div>`,
});
const app = new Vue({
el:"#test",
template:`
<div>
<ComponentA></ComponentA>
</div>`,
data:{},
})
</script>
</body>
</html>
效果截圖:(自動鎖定效果截圖不到,需要實際執行看)
相關文章
- web前端vue:自定義指令directiveWeb前端Vue
- 自定義Directive使用ngModel
- 深入解析Vue.directive 自定義指令Vue
- Angular 自定義結構型指令 structural directive 的使用AngularStruct
- 總結Vue第二天:自定義子元件、父子元件通訊、插槽Vue元件
- 自定義控制元件總結和思考控制元件
- vue 自定義報警元件Vue元件
- vue自定義指令(Directive中的clickoutside.js)的理解VueIDEJS
- vue自定義全域性元件(或自定義外掛)Vue元件
- 使用vue的v-model自定義 checkbox元件Vue元件
- Vue history 路由模式微信自定義分享總結Vue路由模式
- 自定義view總結View
- Vue + Element 自定義上傳封面元件Vue元件
- 面向Vue新人:使用Vue自定義指令來完善一個Select元件Vue元件
- AngularJS 自定義 Directive 及程式碼示例AngularJS
- 使用VUE元件建立SpreadJS自定義單元格(二)Vue元件JS
- 使用VUE元件建立SpreadJS自定義單元格(一)Vue元件JS
- 080 元件自定義事件-繫結元件事件
- Flutter Widget自定義總結Flutter
- iOS自定義 Transitions 動畫總結iOS動畫
- Vue 子元件呼叫父元件方法總結Vue元件
- 使用 defineNuxtComponent`定義 Vue 元件UXVue元件
- Avalonia的自定義使用者元件元件
- VUE 使用總結Vue
- Vue 自定義元件使用 v-modelVue元件
- Vuejs進階知識(二十四)【自定義Directive】VueJS
- AngularJS中自定義有關一個表格的DirectiveAngularJS
- uniapp專案實踐總結(十六)自定義下拉重新整理元件APP元件
- vue 自定義指令Vue
- Vue自定義指令Vue
- 【自定義使用者控制元件】CNMButton控制元件
- Vue父子元件通訊小總結Vue元件
- vue總結「三」--元件生命週期Vue元件
- Vue 置頂元件FixedTopWrap 支援自定義內容置頂Vue元件
- 自定義View以及事件分發總結View事件
- 微信公眾號連結自定義分享總結
- QTreeView使用總結14,自定義model,控制對齊和顏色QTView
- 基於Vue.js PC桌面端彈出框元件|vue自定義彈層元件|vue模態框Vue.js元件