這篇“vue自定義指令使用的方法是什么”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue自定義指令使用的方法是什么”文章吧。
創(chuàng)新互聯(lián)是一家專業(yè)提供上思企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為上思眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
除了 Vue 內(nèi)置的一系列指令 (比如 v-model
或 v-show
) 之外,Vue 還允許你注冊(cè)自定義的指令 (Custom Directives)。
兩種在 Vue 中重用代碼的方式:組件和組合式函數(shù)。組件是主要的構(gòu)建模塊,而組合式函數(shù)則側(cè)重于有狀態(tài)的邏輯。另一方面,自定義指令主要是為了重用涉及普通元素的底層 DOM 訪問的邏輯。
一個(gè)自定義指令由一個(gè)包含類似組件生命周期鉤子的對(duì)象來定義。鉤子函數(shù)會(huì)接收到指令所綁定元素作為其參數(shù)。
Vue 自定義指令有全局注冊(cè)和局部注冊(cè)兩種方式。
先來看看注冊(cè)全局指令的方式,通過 Vue.directive( id, [definition] )方式注冊(cè)全局指令。然后在入口文件中進(jìn)行 Vue.use()調(diào)用。
批量注冊(cè)指令,新建 src/directives/index.js 文件:
import fitColumns from './fit-columns' import enterToInput from './enter-to-input' import resizeHeight from './resize-height' import resizeWidth from './resize-width' import inputFilter from './input-filter' import copy from './copy' import longpress from './longpress' import clickOutside from './click-outside' import emoji from './emoji' const directives = { fitColumns, enterToInput, resizeHeight, resizeWidth, inputFilter, copy, longpress, clickOutside, emoji } export default { install(Vue) { Object.keys(directives).forEach((key) => { Vue.directive(key, directives[key]) }) } }
在 main.js 引入并調(diào)用:
// ..... import Directives from '@/directives' Vue.use(Directives) //.....
接下來就要開發(fā)具體的自定義指令了,那么開發(fā)的要領(lǐng),以及一些開發(fā)技術(shù)點(diǎn)還是要先贅述一遍。
Vue2版本: 一個(gè)指令定義對(duì)象可以提供如下幾個(gè)鉤子函數(shù) (均為可選):
bind
:只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用。在這里可以進(jìn)行一次性的初始化設(shè)置。
inserted
:被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 (僅保證父節(jié)點(diǎn)存在,但不一定已被插入文檔中)。
update
:所在組件的 VNode 更新時(shí)調(diào)用,但是可能發(fā)生在其子 VNode 更新之前。指令的值可能發(fā)生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新。
componentUpdated
:指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。
unbind
:只調(diào)用一次,指令與元素解綁時(shí)調(diào)用。
指令鉤子函數(shù)會(huì)被傳入以下參數(shù):
el
:指令所綁定的元素,可以用來直接操作 DOM。
binding
:一個(gè)對(duì)象,包含以下 property:
name
:指令名,不包括 v-
前綴。
value
:指令的綁定值,例如:v-my-directive="1 + 1"
中,綁定值為 2
。
oldValue
:指令綁定的前一個(gè)值,僅在 update
和 componentUpdated
鉤子中可用。無論值是否改變都可用。
expression
:字符串形式的指令表達(dá)式。例如 v-my-directive="1 + 1"
中,表達(dá)式為 "1 + 1"
。
arg
:傳給指令的參數(shù),可選。例如 v-my-directive:foo
中,參數(shù)為 "foo"
。
modifiers
:一個(gè)包含修飾符的對(duì)象。例如:v-my-directive.foo.bar
中,修飾符對(duì)象為 { foo: true, bar: true }
。
vnode
:Vue 編譯生成的虛擬節(jié)點(diǎn)。移步 VNode API 來了解更多詳情。
oldVnode
:上一個(gè)虛擬節(jié)點(diǎn),僅在 update
和 componentUpdated
鉤子中可用。
Tips
:除了el
之外,其它參數(shù)都應(yīng)該是只讀的,切勿進(jìn)行修改。如果需要在鉤子之間共享數(shù)據(jù),建議通過元素的dataset
來進(jìn)行。
Vue3版本:有稍微變化,由于本文主要說的都是 Vue2 版本的(也是手上很多 vue2 版本的老項(xiàng)目在維護(hù))
以下都是我在項(xiàng)目中用到的自定義指令,特此分享出來,供大家參考。同時(shí)也不敢保證 100% 無bug,如果在您的使用場(chǎng)景中如有 bug,還望留言批評(píng)指導(dǎo)。
1、click-outside.js
場(chǎng)景:clickOutside 自定義指令可以應(yīng)用于需要在點(diǎn)擊元素外部時(shí)觸發(fā)某些操作的場(chǎng)景,例如:
點(diǎn)擊外部關(guān)閉彈窗:當(dāng)用戶點(diǎn)擊彈窗外部時(shí),需要關(guān)閉彈窗并執(zhí)行一些操作,例如清空輸入框、重置表單等。
點(diǎn)擊外部隱藏下拉菜單:當(dāng)用戶點(diǎn)擊下拉菜單外部時(shí),需要隱藏下拉菜單并執(zhí)行一些操作,例如清空搜索框、重置篩選條件等。
點(diǎn)擊外部取消選中狀態(tài):當(dāng)用戶點(diǎn)擊選中元素外部時(shí),需要取消選中狀態(tài)并執(zhí)行一些操作,例如清空選中項(xiàng)、重置狀態(tài)等。
總之,clickOutside 自定義指令可以幫助我們實(shí)現(xiàn)一些常見的交互需求,提升用戶體驗(yàn)和操作效率。
const clickOutside = { bind: function(el, binding, vnode) { el.clickOutsideEvent = function(event) { if (!(el === event.target || el.contains(event.target))) { vnode.context[binding.expression](event) } } document.body.addEventListener('click', el.clickOutsideEvent) }, unbind: function(el) { document.body.removeEventListener('click', el.clickOutsideEvent) } } export default clickOutside
2、copy.js
場(chǎng)景: copy 自定義指令可以應(yīng)用于需要實(shí)現(xiàn)一鍵復(fù)制文本內(nèi)容的場(chǎng)景,例如:
復(fù)制分享鏈接:當(dāng)用戶點(diǎn)擊分享按鈕時(shí),需要將當(dāng)前頁(yè)面的分享鏈接復(fù)制到剪貼板中,方便用戶分享給其他人。
復(fù)制優(yōu)惠碼:當(dāng)用戶點(diǎn)擊領(lǐng)取優(yōu)惠券按鈕時(shí),需要將優(yōu)惠碼復(fù)制到剪貼板中,方便用戶在購(gòu)物時(shí)使用。
復(fù)制代碼片段:當(dāng)用戶需要復(fù)制代碼片段時(shí),可以通過點(diǎn)擊復(fù)制按鈕,將代碼片段復(fù)制到剪貼板中,方便用戶在編輯器中粘貼使用。
總之,copy 自定義指令可以幫助我們實(shí)現(xiàn)一些常見的復(fù)制操作,提升用戶體驗(yàn)和操作效率。
const copy = { bind: function(el, binding) { el.addEventListener('click', function() { const textToCopy = binding.value const input = document.createElement('input') input.setAttribute('value', textToCopy) document.body.appendChild(input) input.select() document.execCommand('copy') document.body.removeChild(input) }) } } export default copy
3、emoji.js
場(chǎng)景: emoji 自定義指令可以應(yīng)用于需要在輸入框中插入表情符號(hào)的場(chǎng)景,例如:
發(fā)送表情消息:當(dāng)用戶在聊天應(yīng)用中發(fā)送消息時(shí),可以通過點(diǎn)擊表情按鈕,在輸入框中插入表情符號(hào),豐富聊天內(nèi)容。
評(píng)論點(diǎn)贊:當(dāng)用戶在社交應(yīng)用中對(duì)評(píng)論進(jìn)行點(diǎn)贊時(shí),可以通過點(diǎn)擊點(diǎn)贊按鈕,在評(píng)論框中插入點(diǎn)贊表情符號(hào),表達(dá)自己的情感。
表情搜索:當(dāng)用戶需要在輸入框中插入特定的表情符號(hào)時(shí),可以通過輸入表情名稱或關(guān)鍵字,篩選出符合條件的表情符號(hào),方便用戶選擇使用。
總之,emoji 自定義指令可以幫助我們實(shí)現(xiàn)在輸入框中插入表情符號(hào)的功能,提升用戶體驗(yàn)和操作效率。
// 在指令的inserted鉤子函數(shù)中,定義一個(gè)正則表達(dá)式,用來匹配表情及特殊字符。 // 在指令的update鉤子函數(shù)中,判斷輸入框的值是否發(fā)生變化,如果變化了,則使用正則表達(dá)式來過濾輸入框的值。 // 在指令的unbind鉤子函數(shù)中,清除事件監(jiān)聽器,避免內(nèi)存泄漏。 const emoji = { inserted: function(el) { el.addEventListener('input', function() { const reg = /[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDFFF]|[\u200D\uFE0F\uFE00-\uFE0F]/g el.value = el.value.replace(reg, '') }) }, update: function(el) { const reg = /[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDFFF]|[\u200D\uFE0F\uFE00-\uFE0F]/g el.value = el.value.replace(reg, '') }, unbind: function(el) { el.removeEventListener('input') } } export default emoji
4、enter-to-input.js
場(chǎng)景: enter-to-input 自定義指令可以應(yīng)用于需要在輸入框中按下回車鍵時(shí)觸發(fā)特定操作的場(chǎng)景,例如:
搜索框回車搜索:當(dāng)用戶在搜索框中輸入關(guān)鍵字后,按下回車鍵時(shí),可以觸發(fā)搜索操作,快速獲取搜索結(jié)果。
發(fā)送消息:當(dāng)用戶在聊天應(yīng)用中輸入完消息后,按下回車鍵時(shí),可以觸發(fā)發(fā)送消息操作,方便快捷地發(fā)送消息。
提交表單:當(dāng)用戶在表單中填寫完信息后,按下回車鍵時(shí),可以觸發(fā)提交表單操作,快速提交表單信息。
總之,enter-to-input 自定義指令可以幫助我們實(shí)現(xiàn)在輸入框中按下回車鍵時(shí)觸發(fā)特定操作的功能,提升用戶體驗(yàn)和操作效率。
const enterToInput = { inserted: function(el) { let inputs = el.querySelectorAll('input') // 綁定回寫事件 for (var i = 0; i < inputs.length; i++) { inputs[i].setAttribute('keyFocusIndex', i) inputs[i].addEventListener('keyup', ev => { if (ev.keyCode === 13) { const targetTo = ev.srcElement.getAttribute('keyFocusTo') if (targetTo) { this.$refs[targetTo].$el.focus() } else { var attrIndex = ev.srcElement.getAttribute('keyFocusIndex') var ctlI = parseInt(attrIndex) inputs = el.querySelectorAll('input') if (ctlI < inputs.length - 1) inputs[ctlI + 1].focus() } } }) } } } export default enterToInput
5、fit-columns.js
場(chǎng)景: fit-columns 自定義指令可以應(yīng)用于需要自動(dòng)調(diào)整表格列寬的場(chǎng)景,例如:
數(shù)據(jù)展示:當(dāng)我們需要在頁(yè)面上展示大量數(shù)據(jù)時(shí),可以使用表格進(jìn)行展示,通過 fit-columns 自定義指令可以自動(dòng)調(diào)整表格列寬,使得數(shù)據(jù)更加清晰易讀。
數(shù)據(jù)編輯:當(dāng)我們需要在頁(yè)面上編輯表格數(shù)據(jù)時(shí),可以使用表格進(jìn)行編輯,通過 fit-columns 自定義指令可以自動(dòng)調(diào)整表格列寬,使得編輯更加方便快捷。
數(shù)據(jù)導(dǎo)出:當(dāng)我們需要將表格數(shù)據(jù)導(dǎo)出為 Excel 或 CSV 格式時(shí),可以使用表格進(jìn)行導(dǎo)出,通過 fit-columns 自定義指令可以自動(dòng)調(diào)整表格列寬,使得導(dǎo)出的數(shù)據(jù)更加美觀。
總之,fit-columns 自定義指令可以幫助我們實(shí)現(xiàn)自動(dòng)調(diào)整表格列寬的功能,提升數(shù)據(jù)展示、編輯和導(dǎo)出的效率和美觀度。
import './fit-columns.css' function adjustColumnWidth(table, padding = 0) { const colgroup = table.querySelector('colgroup') const colDefs = [...colgroup.querySelectorAll('col')] colDefs.forEach((col) => { const clsName = col.getAttribute('name') const clsWidth = col.getAttribute('width') if (clsWidth < 200) return const cells = [ ...table.querySelectorAll(`td.${clsName}`), ...table.querySelectorAll(`th.${clsName}`) ] if (cells[0] && cells[0].classList && cells[0].classList.contains && cells[0].classList.contains('leave-alone')) { return } const widthList = cells.map((el) => { return el.querySelector('.cell') && el.querySelector('.cell').scrollWidth || 0 }) const max = Math.max(...widthList) table.querySelectorAll(`col[name=${clsName}]`).forEach((el) => { // console.log(222, max + padding) el.setAttribute('width', max + padding > 500 ? 500 : max + padding) }) }) } const fitColumns = { update() { }, bind() { }, inserted(el, binding) { setTimeout(() => { adjustColumnWidth(el, binding.value) }, 300) }, componentUpdated(el, binding) { el.classList.add('r-table') setTimeout(() => { adjustColumnWidth(el, binding.value) }, 300) }, unbind() { } } export default fitColumns
5.1、fit-columns.css
.el-table.r-table .cell { display: inline-block; /* white-space: nowrap; */ width: auto; overflow: auto; } .el-table.r-table .el-table__body-wrapper { overflow-x: auto; }
6、input-filter.js
場(chǎng)景: input-filter 自定義指令可以應(yīng)用于需要對(duì)用戶輸入進(jìn)行過濾和限制的場(chǎng)景,例如:
輸入框過濾:當(dāng)我們需要在輸入框中輸入特定類型的數(shù)據(jù)時(shí),可以使用 input-filter 自定義指令對(duì)用戶輸入進(jìn)行過濾和限制,例如只允許輸入數(shù)字、字母或特定字符等。
表單驗(yàn)證:當(dāng)我們需要對(duì)表單中的數(shù)據(jù)進(jìn)行驗(yàn)證時(shí),可以使用 input-filter 自定義指令對(duì)用戶輸入進(jìn)行過濾和限制,例如驗(yàn)證手機(jī)號(hào)碼、郵箱地址等。
密碼輸入:當(dāng)我們需要用戶輸入密碼時(shí),可以使用 input-filter 自定義指令對(duì)用戶輸入進(jìn)行過濾和限制,例如限制密碼長(zhǎng)度、只允許輸入特定字符等。
總之,input-filter 自定義指令可以幫助我們實(shí)現(xiàn)對(duì)用戶輸入進(jìn)行過濾和限制的功能,提升表單驗(yàn)證和數(shù)據(jù)輸入的效率和準(zhǔn)確性。
const findEle = (parent, type) => { return parent.tagName.toLowerCase() === type ? parent : parent.querySelector(type) } const trigger = (el, type) => { const e = document.createEvent('HTMLEvents') e.initEvent(type, true, true) el.dispatchEvent(e) } const inputFilter = { mounted(el, binding, vnode) { const bindV = binding.value const regRule = bindV.regRule ? bindV.regRule : /[^\a-zA-Z0-9\u4E00-\u9FA5]+$/g const length = bindV.length ? bindV.length : 30 const $inp = findEle(el, 'input') el.$inp = $inp $inp.handle = () => { const val = $inp.value $inp.value = val.replace(regRule, '').substring(0, length) trigger($inp, 'input') } $inp.addEventListener('keyup', $inp.handle) }, unmounted(el) { el.$inp.removeEventListener('keyup', el.$inp.handle) } } export default inputFilter
7、longpress.js
場(chǎng)景: longpress 自定義指令可以應(yīng)用于需要長(zhǎng)按觸發(fā)事件的場(chǎng)景,例如:
按鈕長(zhǎng)按:當(dāng)我們需要在按鈕上長(zhǎng)按觸發(fā)某個(gè)事件時(shí),可以使用 longpress 自定義指令,例如長(zhǎng)按刪除按鈕可以刪除某個(gè)元素。 圖片預(yù)覽:當(dāng)我們需要在圖片上長(zhǎng)按觸發(fā)預(yù)覽事件時(shí),可以使用 longpress 自定義指令,例如長(zhǎng)按圖片可以彈出預(yù)覽框。 列表操作:當(dāng)我們需要在列表中長(zhǎng)按觸發(fā)某個(gè)操作時(shí),可以使用 longpress 自定義指令,例如長(zhǎng)按列表項(xiàng)可以彈出操作菜單。
總之,longpress 自定義指令可以幫助我們實(shí)現(xiàn)長(zhǎng)按觸發(fā)事件的功能,提升用戶體驗(yàn)和操作效率。
// 在 bind 鉤子函數(shù)中綁定了 mousedown、touchstart、click、mouseout、touchend 和 touchcancel 事件。 // 當(dāng)用戶按下鼠標(biāo)或觸摸屏?xí)r,我們會(huì)啟動(dòng)一個(gè)定時(shí)器,如果在指定的時(shí)間內(nèi)沒有松開鼠標(biāo)或手指,則執(zhí)行指令的回調(diào)函數(shù)。 // 如果用戶在指定的時(shí)間內(nèi)松開了鼠標(biāo)或手指,則取消定時(shí)器。 const longpress = { bind: function(el, binding) { let pressTimer = null const duration = binding.value || 500 // 默認(rèn)長(zhǎng)按時(shí)間為 500ms const start = function(event) { if (event.type === 'click' && event.button !== 0) { return } if (pressTimer === null) { pressTimer = setTimeout(() => { handler() }, duration) } } const cancel = function() { if (pressTimer !== null) { clearTimeout(pressTimer) pressTimer = null } } const handler = function() { binding.value() } el.addEventListener('mousedown', start) el.addEventListener('touchstart', start) el.addEventListener('click', cancel) el.addEventListener('mouseout', cancel) el.addEventListener('touchend', cancel) el.addEventListener('touchcancel', cancel) } } export default longpress
8、resize-height.js
場(chǎng)景: resize-height 自定義指令可以應(yīng)用于需要根據(jù)內(nèi)容自適應(yīng)高度的場(chǎng)景,例如:
文本框自適應(yīng)高度:當(dāng)我們需要在文本框中輸入多行文本時(shí),可以使用 resize-height 自定義指令,使文本框根據(jù)內(nèi)容自適應(yīng)高度,避免內(nèi)容溢出或留白。
評(píng)論框自適應(yīng)高度:當(dāng)我們需要在評(píng)論框中輸入多行文本時(shí),可以使用 resize-height 自定義指令,使評(píng)論框根據(jù)內(nèi)容自適應(yīng)高度,提升用戶體驗(yàn)和操作效率。
動(dòng)態(tài)列表自適應(yīng)高度:當(dāng)我們需要在動(dòng)態(tài)列表中展示不同高度的內(nèi)容時(shí),可以使用 resize-height 自定義指令,使列表項(xiàng)根據(jù)內(nèi)容自適應(yīng)高度,避免內(nèi)容溢出或留白。
總之,resize-height 自定義指令可以幫助我們實(shí)現(xiàn)根據(jù)內(nèi)容自適應(yīng)高度的功能,提升用戶體驗(yàn)和界面美觀度。
const resizeHeight = { // 綁定時(shí)調(diào)用 bind(el, binding) { let height = '' function isResize() { // 可根據(jù)需求,調(diào)整內(nèi)部代碼,利用 binding.value 返回即可 const style = document.defaultView.getComputedStyle(el) if (height !== style.height) { // 此處關(guān)鍵代碼,通過此處代碼將數(shù)據(jù)進(jìn)行返回,從而做到自適應(yīng) binding.value({ height: style.height }) } height = style.height } // 設(shè)置調(diào)用函數(shù)的延時(shí),間隔過短會(huì)消耗過多資源 el.__vueSetInterval__ = setInterval(isResize, 100) }, unbind(el) { clearInterval(el.__vueSetInterval__) } } export default resizeHeight
9、resize-width.js
場(chǎng)景: resize-width 自定義指令可以應(yīng)用于需要根據(jù)內(nèi)容自適應(yīng)寬度的場(chǎng)景,例如:
圖片自適應(yīng)寬度:當(dāng)我們需要在頁(yè)面中展示不同寬度的圖片時(shí),可以使用 resize-width 自定義指令,使圖片根據(jù)內(nèi)容自適應(yīng)寬度,避免圖片變形或溢出。
表格自適應(yīng)寬度:當(dāng)我們需要在頁(yè)面中展示不同寬度的表格時(shí),可以使用 resize-width 自定義指令,使表格根據(jù)內(nèi)容自適應(yīng)寬度,避免表格變形或溢出。
動(dòng)態(tài)列表自適應(yīng)寬度:當(dāng)我們需要在動(dòng)態(tài)列表中展示不同寬度的內(nèi)容時(shí),可以使用 resize-width 自定義指令,使列表項(xiàng)根據(jù)內(nèi)容自適應(yīng)寬度,避免內(nèi)容變形或溢出。
總之,resize-width 自定義指令可以幫助我們實(shí)現(xiàn)根據(jù)內(nèi)容自適應(yīng)寬度的功能,提升用戶體驗(yàn)和界面美觀度。
const resizeWidth = { // 綁定時(shí)調(diào)用 bind(el, binding) { let width = '' function isResize() { // 可根據(jù)需求,調(diào)整內(nèi)部代碼,利用binding.value返回即可 const style = document.defaultView.getComputedStyle(el) if (width !== style.width) { // 此處關(guān)鍵代碼,通過此處代碼將數(shù)據(jù)進(jìn)行返回,從而做到自適應(yīng) binding.value({ width: style.width }) } width = style.width } // 設(shè)置調(diào)用函數(shù)的延時(shí),間隔過短會(huì)消耗過多資源 el.__vueSetInterval__ = setInterval(isResize, 100) }, unbind(el) { clearInterval(el.__vueSetInterval__) } } export default resizeWidth
Vue2 自定義指令的原理可以簡(jiǎn)單概括為:通過 Vue.directive() 方法注冊(cè)指令,當(dāng)指令被綁定到元素上時(shí),Vue 會(huì)創(chuàng)建一個(gè)指令實(shí)例,該實(shí)例包含指令的鉤子函數(shù)和其他配置項(xiàng),然后根據(jù)指令的生命周期鉤子函數(shù),依次執(zhí)行相應(yīng)的邏輯,例如 bind、inserted、update、componentUpdated 和 unbind 等。
具體來說,Vue2 自定義指令的原理包括以下幾個(gè)方面:
注冊(cè)指令:通過 Vue.directive() 方法注冊(cè)指令,該方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)是指令名稱,第二個(gè)參數(shù)是一個(gè)對(duì)象,包含指令的鉤子函數(shù)和其他配置項(xiàng)。
創(chuàng)建指令實(shí)例:當(dāng)指令被綁定到元素上時(shí),Vue 會(huì)創(chuàng)建一個(gè)指令實(shí)例,該實(shí)例包含指令的鉤子函數(shù)和其他配置項(xiàng)。
指令鉤子函數(shù)執(zhí)行:當(dāng)指令實(shí)例被創(chuàng)建后,Vue 會(huì)根據(jù)指令的生命周期鉤子函數(shù),依次執(zhí)行相應(yīng)的邏輯,例如 bind、inserted、update、componentUpdated 和 unbind 等。
操作 DOM:在指令鉤子函數(shù)中,我們可以通過 el 參數(shù)獲取到指令綁定的元素,然后對(duì)元素進(jìn)行操作,例如修改元素的樣式、屬性或內(nèi)容等。
注銷指令:當(dāng)指令被解綁或元素被銷毀時(shí),Vue 會(huì)調(diào)用指令的 unbind 鉤子函數(shù),我們可以在該函數(shù)中清除指令創(chuàng)建的事件監(jiān)聽器、定時(shí)器或其他資源。
總之,Vue2 自定義指令的原理是通過注冊(cè)指令、創(chuàng)建指令實(shí)例、執(zhí)行指令鉤子函數(shù)、操作 DOM 和注銷指令等步驟來實(shí)現(xiàn)的,通過這些步驟,我們可以實(shí)現(xiàn)各種自定義指令的功能。
以上就是關(guān)于“vue自定義指令使用的方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標(biāo)題名稱:vue自定義指令使用的方法是什么
URL地址:http://newbst.com/article26/jhcpcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、小程序開發(fā)、網(wǎng)站改版、網(wǎng)站營(yíng)銷、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)