当前位置:首页 > VUE

vue 实现多选

2026-02-25 14:56:39VUE

Vue 实现多选的方法

使用 v-model 绑定数组

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

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

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

使用下拉多选

通过 <select multiple> 结合 v-model 实现多选。

vue 实现多选

<template>
  <div>
    <h3>选择你喜欢的框架:</h3>
    <select multiple v-model="selectedFrameworks">
      <option v-for="framework in frameworks" :key="framework" :value="framework">
        {{ framework }}
      </option>
    </select>
    <p>已选择:{{ selectedFrameworks }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      frameworks: ['Vue', 'React', 'Angular', 'Svelte'],
      selectedFrameworks: []
    };
  }
};
</script>

使用第三方组件库

若需要更丰富的功能(如搜索、分组等),可以借助第三方组件库如 Element UIVuetify

vue 实现多选

以 Element UI 为例:

<template>
  <div>
    <el-select v-model="selectedOptions" multiple placeholder="请选择">
      <el-option
        v-for="item in options"
        :key="item.value"
        :label="item.label"
        :value="item.value">
      </el-option>
    </el-select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'option1', label: '选项1' },
        { value: 'option2', label: '选项2' }
      ],
      selectedOptions: []
    };
  }
};
</script>

自定义多选组件

通过自定义逻辑实现多选交互,例如点击标签切换选中状态。

<template>
  <div>
    <div 
      v-for="tag in tags" 
      :key="tag" 
      class="tag" 
      :class="{ active: selectedTags.includes(tag) }"
      @click="toggleTag(tag)">
      {{ tag }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tags: ['前端', '后端', '运维', '设计'],
      selectedTags: []
    };
  },
  methods: {
    toggleTag(tag) {
      const index = this.selectedTags.indexOf(tag);
      if (index === -1) {
        this.selectedTags.push(tag);
      } else {
        this.selectedTags.splice(index, 1);
      }
    }
  }
};
</script>

<style>
.tag {
  display: inline-block;
  padding: 5px 10px;
  margin: 5px;
  border: 1px solid #ccc;
  cursor: pointer;
}
.tag.active {
  background-color: #42b983;
  color: white;
}
</style>

注意事项

  • 使用 v-model 绑定时需确保初始值为数组。
  • 下拉多选需设置 multiple 属性。
  • 第三方组件库需按文档引入并注册组件。

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

相关文章

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现groupbox

vue实现groupbox

Vue 实现 GroupBox 组件 在 Vue 中实现类似 GroupBox 的效果可以通过自定义组件完成。GroupBox 通常是一个带有标题的边框容器,用于将相关控件分组显示。 基本实现方法…