vue 实现多选
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 实现多选。

<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 UI 或 Vuetify。

以 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属性。 - 第三方组件库需按文档引入并注册组件。






