当前位置: 首页 > news >正文

vue自定义指令bug

问题描述:

页面加载时,报已下错误。同时,页面数据不显示

环境介绍:

已经添加了vue自定义指令permission,实现如下,用以控制元素显示权限

app.directive('permission', (el, binding) => {if (!store.hasPermission(binding.value)) {if (!binding.value.includes('list')) {el.remove();} else {// 清除不显示的元素el.innerHTML = '';// 创建一个父节点const parentNode = document.createElement('div');parentNode.style.width = '100%';parentNode.style.display = 'flex';parentNode.style.justifyContent = 'center';parentNode.style.alignItems = 'center';const imgElement = document.createElement('img');imgElement.src = '@/../../public/layout/images/noPermission.png'; // 设置图片路径imgElement.alt = '无权限访问图片';imgElement.style.objectFit = 'contain';imgElement.style.height = '40vh';parentNode.appendChild(imgElement);el.appendChild(parentNode);}}
});

页面实现代码

<Button 
v-if="dialogForm.docStatus == 0" 
v-permission="'project:info:basic'" 
label="提交" 
type="button" 
severity="success"@click="onSave(1)"
></Button>

其他介绍:

已知dialogForm.docStatus已经在初始时定义了,并被赋值0;后续,通过接口,将返回结果赋值给该变量。

乍一看是不是没有问题,但是页面确实也报错,不显示数据。

问题分析:

初始页面时,因为初始赋值,button元素是存在的,通过vue自定义指令,发现需要删除该元素,结果因为页面接口返回结果,出发了v-if,直接元素没了。所以自定义指令中的删除逻辑,发现家被偷了,所以报错了。

解决方法:

直接外面包一层,保证自定义指令逻辑执行时,有元素可以操作。

<div v-if="dialogForm.docStatus == 0"><Button v-permission="'project:info:basic'" label="提交" type="button" severity="success" @click="onSave(1)"></Button>
</div>

问题回顾:

对于浏览器的报错,还是没法快速定位,只是答题猜到是因为元素操作导致的,但是结合复杂的页面逻辑,没法准确定位问题(特别是,没有报自己代码错误位置的提示)。有大佬能帮忙解答下,如何定位的技巧吗。

http://www.dtcms.com/a/285722.html

相关文章:

  • poi-excel-添加水印
  • Vue3 学习教程,从入门到精通,Vue3 项目打包语法知识点及案例代码(9)
  • Windows Server 版本之间有什么区别?
  • 私有服务器AI智能体搭建配置选择记录
  • NGFW服务器安全防护
  • 浏览器信息隔离全指南:从多账号管理到隐私防护
  • VirtualBox + CentOS:启用 DHCP 获取 IPv4 地址
  • 数据结构:顺序表和链表
  • 【PTA数据结构 | C语言版】斜堆的合并操作
  • Expression.Block详解
  • 微信小程序商品结算功能
  • gitlab-ce本地化部署
  • 一文讲清楚React的render优化,包括shouldComponentUpdate、PureComponent和memo
  • 在 React 中根据数值动态设置 SVG 线条粗细
  • Linux | Bash 子字符串提取
  • Java 8 Stream 流操作大全:从入门到实战全覆盖(附案例)
  • 【软件系统架构】系列七:系统性能——计算机性能深入解析
  • 【机器人】HOV-SG 开放词汇 | 分层3D场景图 | 语言引导机器人导航
  • DNN平台因恶意交互导致NTLM哈希泄露漏洞(CVE-2025-52488)
  • ​​Docker 速通教程
  • 用Python实现神经网络(四)
  • 【大模型:知识图谱】--6.Neo4j DeskTop安装+使用
  • 数字化转型:概念性名词浅谈(第三十讲)
  • JAVA面试宝典 -《Elasticsearch 深度调优实战》
  • OpenAI发布通用智能体ChatGPT Agent:实现自主思考、联网与工具调用,智能体赛道大变天!
  • Java 大视界 -- Java 大数据在智能医疗电子健康档案数据挖掘与健康服务创新中的应用(350)
  • QCustomPlot 使用教程
  • 【Linux】基本指令(入门篇)(上)
  • SOES:软实现EtherCAT从站协议栈项目介绍及从站开发案例
  • 【Python】SQLAlchemy实现upsert