当前位置:首页 > VUE

vue 实现多选功能

2026-01-15 23:14:22VUE

Vue 实现多选功能的方法

使用 v-model 绑定数组

在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。适用于复选框组(checkbox)或下拉多选(select multiple)。

<template>
  <div>
    <h3>选择你喜欢的编程语言:</h3>
    <label v-for="lang in languages" :key="lang">
      <input type="checkbox" :value="lang" v-model="selectedLanguages">
      {{ lang }}
    </label>
    <p>已选择:{{ selectedLanguages }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      languages: ['JavaScript', 'Python', 'Java', 'C++'],
      selectedLanguages: []
    };
  }
};
</script>

使用第三方组件库

对于更复杂的需求(如表格多选、标签式多选),可以使用第三方 UI 库:

  • Element UIel-checkbox-groupel-select 多选模式
  • Vuetifyv-checkboxv-select 多选
  • Ant Design Vuea-checkbox-groupa-select 多选

以 Element UI 为例:

<template>
  <el-checkbox-group v-model="selectedOptions">
    <el-checkbox v-for="option in options" :key="option" :label="option">
      {{ option }}
    </el-checkbox>
  </el-checkbox-group>
</template>

自定义多选逻辑

如果需要完全自定义逻辑(如点击 div 多选),可以通过事件和数组操作实现:

<template>
  <div>
    <div 
      v-for="item in items" 
      :key="item.id"
      @click="toggleSelection(item)"
      :class="{ 'selected': isSelected(item) }"
    >
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '选项1' },
        { id: 2, name: '选项2' }
      ],
      selectedItems: []
    };
  },
  methods: {
    toggleSelection(item) {
      const index = this.selectedItems.findIndex(i => i.id === item.id);
      if (index >= 0) {
        this.selectedItems.splice(index, 1);
      } else {
        this.selectedItems.push(item);
      }
    },
    isSelected(item) {
      return this.selectedItems.some(i => i.id === item.id);
    }
  }
};
</script>

多选表格实现

结合表格组件实现行多选功能(以 Element UI 为例):

<template>
  <el-table
    ref="multipleTable"
    :data="tableData"
    @selection-change="handleSelectionChange"
  >
    <el-table-column type="selection" width="55"></el-table-column>
    <el-table-column prop="name" label="名称"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '数据1' },
        { name: '数据2' }
      ],
      multipleSelection: []
    };
  },
  methods: {
    handleSelectionChange(val) {
      this.multipleSelection = val;
    }
  }
};
</script>

注意事项

  1. 使用 v-model 绑定时,初始值需设为空数组 [],否则可能导致非数组类型错误
  2. 对于动态渲染的选项,确保 :key 唯一性
  3. 多选下拉(<select multiple>)需按住 Ctrl/Command 键选择

vue 实现多选功能

标签: 多选功能
分享给朋友:

相关文章

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-mode…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue电影功能实现

vue电影功能实现

Vue电影功能实现 数据获取与展示 使用Axios或Fetch API从电影API获取数据,例如TMDB或豆瓣API。在Vue组件的created或mounted生命周期钩子中发起请求,将返回的电影数…

vue实现拨号功能

vue实现拨号功能

Vue实现拨号功能的方法 使用HTML5的tel协议 在Vue模板中直接使用<a>标签的tel:协议实现拨号功能。这种方法适用于移动端浏览器,点击后会调起系统的拨号界面。 <tem…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现答题功能

vue实现答题功能

Vue实现答题功能的基本思路 在Vue中实现答题功能通常需要以下几个核心模块:题目数据管理、用户交互处理、答题状态跟踪和结果计算。通过组件化开发可以更好地组织代码结构。 数据结构设计 答题功能的基础…