欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3實(shí)現(xiàn)自定義指令攔截點(diǎn)擊事件的示例代碼

 更新時(shí)間:2023年02月13日 10:26:44   作者:天渺工作室  
某些應(yīng)用場景會給點(diǎn)擊事件添加權(quán)限,不存在權(quán)限就攔截點(diǎn)擊事件,有權(quán)限就繼續(xù)正常觸發(fā)點(diǎn)擊事件。這樣的效果是如何實(shí)現(xiàn)的呢,本文就來和大家詳細(xì)講講

案例使用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的用法

    這篇文章主要介紹了詳解在vue-cli中使用graphql即vue-apollo的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • 如何在Vue項(xiàng)目中添加接口監(jiān)聽遮罩

    如何在Vue項(xiàng)目中添加接口監(jiān)聽遮罩

    這篇文章主要介紹了如何在Vue項(xiàng)目中添加接口監(jiān)聽遮罩,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • vuejs實(shí)現(xiàn)遞歸樹型菜單組件

    vuejs實(shí)現(xiàn)遞歸樹型菜單組件

    本篇文章主要介紹了vuejs實(shí)現(xiàn)遞歸樹型菜單組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue實(shí)現(xiàn)點(diǎn)擊后文字變色切換方法

    Vue實(shí)現(xiàn)點(diǎn)擊后文字變色切換方法

    下面小編就為大家分享一篇Vue實(shí)現(xiàn)點(diǎn)擊后文字變色切換方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue操作dom并為dom增加點(diǎn)擊事件方式

    vue操作dom并為dom增加點(diǎn)擊事件方式

    這篇文章主要介紹了vue操作dom并為dom增加點(diǎn)擊事件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 手寫Vue源碼之?dāng)?shù)據(jù)劫持示例詳解

    手寫Vue源碼之?dāng)?shù)據(jù)劫持示例詳解

    這篇文章主要給大家介紹了手寫Vue源碼之?dāng)?shù)據(jù)劫持的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Vue中key的具體使用

    Vue中key的具體使用

    在vue中,key是dom對象的標(biāo)識,本文主要介紹了Vue中key的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • vue2.0安裝style/css loader的方法

    vue2.0安裝style/css loader的方法

    下面小編就為大家分享一篇vue2.0安裝style/css loader的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue 實(shí)例事件簡單示例

    Vue 實(shí)例事件簡單示例

    這篇文章主要介紹了Vue 實(shí)例事件,結(jié)合簡單示例形勢分析了vue.js事件響應(yīng)與頁面元素相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • Vue項(xiàng)目之學(xué)生管理系統(tǒng)實(shí)例詳解

    Vue項(xiàng)目之學(xué)生管理系統(tǒng)實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Vue項(xiàng)目之學(xué)生管理系統(tǒng)實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論