当前位置:首页 > VUE

实现多选删除vue

2026-01-19 12:59:19VUE

实现多选删除功能(Vue)

在Vue中实现多选删除功能,通常涉及以下关键步骤:

数据绑定与选择状态管理

创建一个数组存储可选择的数据项,并为每个项添加选中状态属性。例如:

data() {
  return {
    items: [
      { id: 1, name: 'Item 1', selected: false },
      { id: 2, name: 'Item 2', selected: false },
      // 更多项...
    ]
  }
}

渲染多选列表

使用v-for渲染列表,配合v-model绑定选中状态:

<div v-for="item in items" :key="item.id">
  <input type="checkbox" v-model="item.selected">
  <span>{{ item.name }}</span>
</div>

删除选中项逻辑

通过计算属性或方法筛选出选中项并删除:

methods: {
  deleteSelected() {
    this.items = this.items.filter(item => !item.selected)
  }
}

完整示例代码

<template>
  <div>
    <button @click="deleteSelected">删除选中项</button>
    <div v-for="item in items" :key="item.id">
      <input type="checkbox" v-model="item.selected">
      <span>{{ item.name }}</span>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1', selected: false },
        { id: 2, name: 'Item 2', selected: false },
        { id: 3, name: 'Item 3', selected: false }
      ]
    }
  },
  methods: {
    deleteSelected() {
      this.items = this.items.filter(item => !item.selected)
    }
  }
}
</script>

增强版实现(支持全选/反选)

添加全选功能

增加全选复选框和对应逻辑:

<input type="checkbox" v-model="selectAll" @change="toggleAll">
<span>全选</span>
computed: {
  selectAll: {
    get() {
      return this.items.every(item => item.selected)
    },
    set(value) {
      this.items.forEach(item => item.selected = value)
    }
  }
},
methods: {
  toggleAll() {
    this.selectAll = !this.selectAll
  }
}

与后端API交互

实际项目中通常需要调用API删除数据:

async deleteSelected() {
  const selectedIds = this.items
    .filter(item => item.selected)
    .map(item => item.id)

  try {
    await axios.delete('/api/items', { data: { ids: selectedIds } })
    this.items = this.items.filter(item => !item.selected)
  } catch (error) {
    console.error('删除失败', error)
  }
}

使用第三方组件库(如Element UI)

若使用UI库,可以简化实现:

实现多选删除vue

<el-checkbox-group v-model="selectedItems">
  <el-checkbox v-for="item in items" :key="item.id" :label="item.id">
    {{ item.name }}
  </el-checkbox>
</el-checkbox-group>
<el-button @click="deleteSelected">删除</el-button>
data() {
  return {
    items: [...],
    selectedItems: []
  }
},
methods: {
  deleteSelected() {
    this.items = this.items.filter(item => !this.selectedItems.includes(item.id))
    this.selectedItems = []
  }
}

标签: 多选vue
分享给朋友:

相关文章

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…