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

Vue.js+Bootstrap的b-table操作列如何添加编辑删除按钮

BootstrapVue 动态表格操作列(编辑/删除按钮)实现方案

你只需要利用b-table提供的列自定义插槽能力即可实现操作列按钮渲染,不需要额外引入第三方组件,具体修改步骤如下:

  • 模板层:在b-table标签内添加action列对应的单元格具名插槽,插槽作用域可直接获取当前行的完整数据,用来绑定按钮的操作事件
  • 配置层(可选):将纯字符串格式的fields配置改为对象格式,自定义操作列的表头文字、关闭排序等不需要的功能
  • 逻辑层:在组件methods中编写编辑、删除按钮对应的业务逻辑即可

完整修改代码

模板部分

<template>
  <div>
    <b-table striped hover :items="items" :fields="fields">
      <!-- 自定义action列渲染内容 -->
      <template #cell(action)="scope">
        <b-button size="sm" variant="primary" class="me-2" @click="handleEdit(scope.item)">
          编辑
        </b-button>
        <b-button size="sm" variant="danger" @click="handleDelete(scope.item.id)">
          删除
        </b-button>
      </template>
    </b-table>
  </div>
</template>

代码说明:

  • #cell(action)是v-slot:cell(action)的简写,是b-table预留的、专门用来自定义key=action列单元格内容的插槽
  • 插槽返回的scope是当前行上下文对象,scope.item对应当前行的完整数据对象,可直接取id、name等字段传参给操作方法
  • 按钮的尺寸、颜色、间距可通过Bootstrap内置的size、variant、间距类自行调整

脚本部分

<script>
export default {
  name:'DataTable',
  data() {
    return {
      // 优化字段配置,自定义每列的表头文字,操作列关闭排序
      fields: [
        { key: "id", label: "ID" },
        { key: "name", label: "用户名" },
        { key: "email", label: "邮箱" },
        { key: "phone", label: "联系电话" },
        { key: "action", label: "操作", sortable: false }
      ],
      items: [
        { id: 1, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 2, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 3, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 4, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 5, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 6, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 7, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 8, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 9, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "},
        { id: 10, name:"Leannes", email: "Sincere@april.biz", phone:"1-770-736-8031 x56442 "}
      ]
    }
  },
  methods: {
    // 编辑按钮逻辑
    handleEdit(rowData) {
      console.log('当前编辑行数据:', rowData)
      // 此处编写弹出编辑表单、跳转编辑页的业务逻辑即可
    },
    // 删除按钮逻辑
    handleDelete(rowId) {
      console.log('待删除数据ID:', rowId)
      // 此处编写删除接口调用、删除后刷新列表的业务逻辑即可
    }
  }
}
</script>

兼容提示:如果你使用的BootstrapVue版本低于2.0.0,插槽语法不支持#简写,请将插槽部分替换为旧版写法:<template slot="cell(action)" slot-scope="scope">,其余逻辑不变。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:48:30