You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue条件渲染指令(v-if)直接显示在页面的原因排查求助

问题原因及解决办法

嘿,这个问题其实是Pug(原Jade)模板语法的写法错误导致的,Vue根本没识别到你的v-if指令,直接把它当成普通文本渲染出来了。

具体原因

你写的代码是:

%div.validation-error v-if="errors.has('start')" %p.error Bitte wählen Sie aus, ab wann Sie Ihren Austauschschüler aufnehmen wollen.

在Pug语法里,元素标签后面直接跟空格的内容,默认会被解析成元素的文本内容,而不是HTML属性(Vue指令本质是特殊的HTML属性)。所以这里的v-if="errors.has('start')"被当成了div的文本,自然就直接显示在页面上了。

正确的写法

在Pug中,要把Vue指令作为元素的属性,需要用括号包裹属性内容,正确代码应该是这样:

%div.validation-error(v-if="errors.has('start')")
  %p.error Bitte wählen Sie aus, ab wann Sie Ihren Austauschschüler aufnehmen wollen.

这样Pug会把v-if解析成div的HTML属性,Vue就能正常识别并处理这个条件渲染指令了。

额外检查点

如果调整写法后还是有问题,可以确认下你的项目构建工具(比如Webpack)是否正确配置了Pug loader,确保Pug模板能被正确编译为标准HTML后再交给Vue处理。不过从你的截图和代码来看,核心问题还是Pug的语法写法错误。

内容的提问来源于stack exchange,提问作者Dende

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:14:35