Vue3實(shí)現(xiàn)自定義指令攔截點(diǎn)擊事件的示例代碼
案例使用Vue3舉例,如在Vue2中使用思路是一致的,語法稍有區(qū)別。
問題
某些應(yīng)用場景會給點(diǎn)擊事件添加權(quán)限,不存在權(quán)限就 攔截 點(diǎn)擊事件(或觸發(fā)其他業(yè)務(wù)事件),有權(quán)限就繼續(xù)正常 觸發(fā) 點(diǎn)擊事件。如果用封裝組件的方法,在使用三方UI庫的情況下,封裝成本過大,并不劃算。
解決方案案例
邏輯
main.ts
// main.ts // 舉例案例 直接在初始化為全局自定義指令 import { createApp } from "vue"; import "./style.css"; import App from "./App.vue"; import router from "./router/router"; import * as echarts from 'echarts'; import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css'; const app = createApp(App); app.use(router); app.use(ElementPlus) // 邏輯封裝 const customClick = (binding: any) => { return () =>{ if (true) { // 判斷條件 // 正常觸發(fā)點(diǎn)擊事件 binding.value(); } else { // 已經(jīng)成功攔截點(diǎn)擊事件 console.log('已經(jīng)成功攔截點(diǎn)擊事件'); }; }; }; // 全局自定義指令 app.directive('custom',{ created(el, binding, vnode, prevVnode) { el.addEventListener('click', customClick(binding)); }, // 離開一定要銷毀卸載 unmounted(el, binding, vnode) { el.removeEventListener('click', customClick); }, }); app.mount("#app");
頁面中的使用
<template> <!--函數(shù)不帶括號--> <button v-custom="onClick">test按鈕</button> <el-button type="primary" v-custom="onClickTest1">Primary</el-button> <!--函數(shù)帶括號 可傳值--> <button v-custom="() => onClick()">test按鈕</button> <el-button type="primary" v-custom="() => onClickTest1(233)">Primary</el-button> </template>
<script lang="ts" setup > const onClick = () => { console.log('_____函數(shù)不帶括號'); }; const onClickTest1 = (num: number) => { console.log('_____函數(shù)帶括號 可傳值'); }; </script>
邏輯封裝還存在優(yōu)化點(diǎn),后續(xù)在持續(xù)優(yōu)化。
到此這篇關(guān)于Vue3實(shí)現(xiàn)自定義指令攔截點(diǎn)擊事件的示例代碼的文章就介紹到這了,更多相關(guān)Vue3自定義指令攔截點(diǎn)擊事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解在vue-cli中使用graphql即vue-apollo的用法
這篇文章主要介紹了詳解在vue-cli中使用graphql即vue-apollo的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09如何在Vue項(xiàng)目中添加接口監(jiān)聽遮罩
這篇文章主要介紹了如何在Vue項(xiàng)目中添加接口監(jiān)聽遮罩,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Vue實(shí)現(xiàn)點(diǎn)擊后文字變色切換方法
下面小編就為大家分享一篇Vue實(shí)現(xiàn)點(diǎn)擊后文字變色切換方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02手寫Vue源碼之?dāng)?shù)據(jù)劫持示例詳解
這篇文章主要給大家介紹了手寫Vue源碼之?dāng)?shù)據(jù)劫持的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Vue項(xiàng)目之學(xué)生管理系統(tǒng)實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Vue項(xiàng)目之學(xué)生管理系統(tǒng)實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03