当前位置:首页 > VUE

vue实现多选效果

2026-02-18 19:36:53VUE

Vue实现多选效果的方法

使用v-model绑定数组

通过v-model绑定一个数组类型的变量,配合checkboxvalue属性实现多选。选中时值会自动添加到数组,取消选中时从数组移除。

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input 
        type="checkbox" 
        v-model="selectedItems" 
        :value="option.value"
      >
      {{ option.label }}
    </label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'apple', label: 'Apple' },
        { value: 'banana', label: 'Banana' },
        { value: 'orange', label: 'Orange' }
      ],
      selectedItems: []
    }
  }
}
</script>

使用第三方组件库

Element UI或Ant Design Vue等库提供现成的多选组件,例如el-checkbox-group

<template>
  <el-checkbox-group v-model="checkedList">
    <el-checkbox 
      v-for="item in options" 
      :key="item.value" 
      :label="item.value"
    >
      {{ item.label }}
    </el-checkbox>
  </el-checkbox-group>
</template>

自定义多选逻辑

通过事件手动管理选中状态,适合需要高度定制的场景:

<template>
  <div>
    <div 
      v-for="item in items" 
      :key="item.id"
      @click="toggleSelect(item.id)"
      :class="{ 'active': selectedIds.includes(item.id) }"
    >
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      selectedIds: []
    }
  },
  methods: {
    toggleSelect(id) {
      const index = this.selectedIds.indexOf(id)
      index === -1 
        ? this.selectedIds.push(id) 
        : this.selectedIds.splice(index, 1)
    }
  }
}
</script>

表格多选

配合表格组件实现行选择功能,常用el-tableselection功能:

vue实现多选效果

<el-table
  ref="multipleTable"
  :data="tableData"
  @selection-change="handleSelectionChange"
>
  <el-table-column type="selection" width="55"></el-table-column>
  <!-- 其他列 -->
</el-table>

<script>
export default {
  methods: {
    handleSelectionChange(val) {
      this.multipleSelection = val
    }
  }
}
</script>

注意事项

  • 对象类型作为value时需使用Vue.set确保响应式更新
  • 大量数据时考虑性能优化,如虚拟滚动
  • 移动端需注意触摸反馈和用户体验
  • 可结合computed属性实现全选/反选逻辑

标签: 多选效果
分享给朋友:

相关文章

js实现滚动条效果

js实现滚动条效果

实现滚动条效果的方法 使用原生JavaScript实现滚动条 通过监听滚动事件,可以动态调整滚动条的位置和样式。以下是一个基础实现示例: // 获取DOM元素 const container = d…

vue实现吸附效果

vue实现吸附效果

实现吸附效果的基本思路 吸附效果通常指当页面滚动到某个位置时,元素固定在视口的特定位置。Vue中可以通过监听滚动事件结合CSS的position: sticky或动态样式切换实现。 使用CSS的po…

Vue实现级联多选

Vue实现级联多选

Vue 实现级联多选的方法 使用 Element UI 的 Cascader 组件 Element UI 提供了 el-cascader 组件,支持多选功能。通过设置 props 的 multiple…

vue 实现分页效果

vue 实现分页效果

使用 Element UI 实现分页 Element UI 提供了现成的分页组件 el-pagination,适合快速集成到 Vue 项目中。 安装 Element UI: npm install…

vue按钮实现多选

vue按钮实现多选

Vue 按钮实现多选的方法 在 Vue 中实现按钮多选功能,可以通过绑定 v-model 到数组或对象,结合样式控制来实现。以下是几种常见方法: 方法一:使用 v-model 绑定数组 通过将 v-…

vue 实现toogle效果

vue 实现toogle效果

使用 v-if 和 v-else 实现切换 通过 Vue 的指令 v-if 和 v-else 可以轻松实现元素的显示与隐藏切换。 <template> <button @c…