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

Vue.js模板使用多个modal时点击一个所有模态框均打开问题求助

问题原因

你猜测的没错,问题就是所有modal复用了相同的静态idrow,BootstrapVue的v-b-modal指令会触发所有id匹配的modal弹出,所以点击任意行的按钮会触发所有行的modal。

修复方案

用每行的唯一标识动态拼接modal的id,保证每个modal的id全局唯一即可。

方案1:用行数据唯一字段拼接(推荐)

如果你的行数据存在id这类唯一标识字段,直接用该字段拼接id:

<template #cell(add)="row">
  <div>
    <b-button
      v-b-modal="`row-modal-${row.item.id}`"
      class="bg-dark text-white"
      test-id="showOrHideAddButton"
      size="sm"
    >
      add
    </b-button>
    <b-modal :id="`row-modal-${row.item.id}`">
      Hello From My Modal!
    </b-modal>
  </div>
</template>

方案2:用行索引拼接

如果没有唯一字段,可以用表格提供的行索引拼接:

<template #cell(add)="row">
  <div>
    <b-button
      v-b-modal="`row-modal-${row.index}`"
      class="bg-dark text-white"
      test-id="showOrHideAddButton"
      size="sm"
    >
      add
    </b-button>
    <b-modal :id="`row-modal-${row.index}`">
      Hello From My Modal!
    </b-modal>
  </div>
</template>

注意事项

  • id属性前必须加冒号:进行动态绑定,否则会被识别为静态字符串
  • 拼接的前缀可自定义,只要保证最终生成的id全局唯一即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:54:06