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);
        }
    }
});

页面实现代码

html 复制代码
<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,直接元素没了。所以自定义指令中的删除逻辑,发现家被偷了,所以报错了。

解决方法:

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

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

问题回顾:

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

相关推荐
Lichenpar1 天前
Springboot采用FastJson2作为MessageConverter时,配置的全局日期类型序列化转换BUG
java·开发语言·bug
Irene19912 天前
AI 找 bug 的局限性 和 Deepseek 优势明显
bug
癫狂的兔子2 天前
【bug】【Python】pandas中的DataFrame.to_excel()和ExcelWriter的区别
python·bug
癫狂的兔子3 天前
【BUG】【Python】【Spider】Compound class names are not allowed.
开发语言·python·bug
netkiller-BG7NYT3 天前
阿里云语音合成CosyVoice重大BUG被我发现了
bug
马猴烧酒.4 天前
【Mybatis出现bug】应为 <statement> 或 DELIMITER,得到 ‘id‘
java·bug·mybatis
请叫我大虾4 天前
发现一个jdk中ArrayList的小BUG
android·java·bug
离离茶4 天前
【笔记1-10】Qt bug记录:dockwidget通过raise在最前面显示,toolbar的拓展菜单失效
笔记·qt·bug
测试_AI_一辰4 天前
Agent & RAG 测试工程笔记 01:Tool Calling 跑通 + 本地 PDF 接入(智谱 GLM)
人工智能·笔记·功能测试·自动化·bug
癫狂的兔子4 天前
【BUG】【Python】清除字符串空格问题
bug