本案例以Vue3为例。比如在Vue2中使用的思路是一样的,语法略有不同。问题有些应用场景会给点击事件添加权限。如果没有权限,则拦截点击事件(或触发其他业务事件),如果有权限,则继续正常触发点击事件。如果使用封装组件的方式,在使用三方UI库的情况下,封装成本太高,不划算。解决方案案例逻辑main.ts//main.ts//示例案例直接初始化为全局自定义命令import{createApp}from"vue";import"./style.css";importAppfrom"./App.vue”;从“./router/router”导入路由器;从“echarts”导入*asecharts;从“element-plus”导入ElementPlus;导入“element-plus/dist/index.css”;constapp=createApp(App);app.use(router);app.use(ElementPlus)//逻辑封装constcustomClick=(binding:any)=>{return()=>{if(true){//判断条件//正常触发点击事件绑定.value();}else{//点击事件拦截成功console.log('点击事件拦截成功');};};};//全局自定义指令app.directive('custom',{created(el,binding,vnode,prevVnode){el.addEventListener('click',customClick(binding));},//一定要销毁并卸载卸载(el,绑定,vnode){el.removeEventListener('click',customClick);},});app.mount("#app");在页面中使用
