You need to enable JavaScript to run this app. Vue.js中在map方法内插入HTML标签显示为纯文本问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中在map方法内插入HTML标签显示为纯文本问题咨询

问题原因

  • Vue 的双大括号{{ }}插值默认会对内容做HTML转义,避免XSS安全风险,所以你拼接的HTML标签会直接以纯文本展示
  • 就算你改用v-html指令渲染也无法满足需求,因为v-html插入的HTML内容不会被Vue编译,你写的@click.prevent事件指令不会生效,完全触发不了绑定的方法

正确实现方案

不要在JS逻辑里拼接HTML,直接用Vue的列表渲染指令v-for在模板层遍历输出内容,代码如下:

<template v-if="category.sub_category.length > 0">
  <td>
    <span 
      v-for="(sub, index) in category.sub_category" 
      :key="sub.subcategory_name"
    >
      {{ sub.subcategory_name }}
      <a href="" @click.prevent="showAssignModal(category)">
        ({{ sub.sub_sub_category.length }})
      </a>
      <!-- 最后一项不输出分隔逗号 -->
      <span v-if="index !== category.sub_category.length - 1">, </span>
    </span>
  </td>
</template>

补充说明

如果你的场景确实需要渲染动态HTML且没有自定义Vue指令、事件绑定需求,才可以用v-html,但需要确保渲染的HTML内容是可信的,避免XSS攻击风险,写法示例:

<td v-html="yourRenderedHtmlContent"></td>

该方案不适用于你当前需要绑定点击事件的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:15:03