当前位置:首页 > 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 为例):

vue 实现多选功能

<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 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

vue功能实现难点

vue功能实现难点

Vue 功能实现的常见难点 响应式系统深度监听 Vue 的响应式系统基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3),但对嵌套对象或数组的深层属性变化需要额外…

vue怎么实现功能

vue怎么实现功能

Vue 是一个渐进式 JavaScript 框架,常用于构建用户界面。以下是一些常见的功能实现方法: 数据绑定 Vue 通过 v-model 实现双向数据绑定,适用于表单输入等场景: <te…

php分页功能的实现

php分页功能的实现

分页功能的基本原理 分页功能的核心是通过SQL的LIMIT子句实现数据分段查询。LIMIT接受两个参数:起始位置偏移量和每页记录数。例如查询第2页(每页10条)的SQL语句为: SELECT * F…

vue 实现单选功能

vue 实现单选功能

实现单选功能的方法 在Vue中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML单选按钮 通过v-model绑定数据,结合原生<input type="radio"&g…