当前位置:首页 > 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中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

vue  select实现

vue select实现

Vue Select 实现方法 在 Vue 中实现下拉选择功能可以使用原生 <select> 标签或第三方库如 vue-select。以下是两种方法的详细说明: 原生 HTML Sele…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现滑块

vue实现滑块

Vue 实现滑块组件的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和事件监听实现基础滑块功能。创建一个包含 input 元素的组件,类型设置为 range,并绑定到…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue实现画板

vue实现画板

Vue 实现画板功能 在 Vue 中实现画板功能可以通过 HTML5 的 Canvas API 实现。以下是一个完整的实现方案: 创建 Vue 组件 新建一个 Vue 单文件组件(SFC),命名为…