vue实现checkbox
Vue 实现 Checkbox
在 Vue 中实现 Checkbox 可以通过多种方式完成,以下是几种常见的实现方法:
使用原生 HTML 和 v-model
通过 Vue 的 v-model 指令可以轻松实现双向数据绑定,适用于单个或多个 Checkbox。

<template>
<div>
<label>
<input type="checkbox" v-model="isChecked" />
{{ isChecked ? 'Checked' : 'Unchecked' }}
</label>
</div>
</template>
<script>
export default {
data() {
return {
isChecked: false,
};
},
};
</script>
多个 Checkbox 绑定到数组
当需要处理多个 Checkbox 时,可以将它们绑定到一个数组,通过 v-model 动态管理选中状态。

<template>
<div>
<label v-for="option in options" :key="option.value">
<input
type="checkbox"
v-model="selectedOptions"
:value="option.value"
/>
{{ option.label }}
</label>
<p>Selected: {{ selectedOptions }}</p>
</div>
</template>
<script>
export default {
data() {
return {
options: [
{ label: 'Option 1', value: 'option1' },
{ label: 'Option 2', value: 'option2' },
{ label: 'Option 3', value: 'option3' },
],
selectedOptions: [],
};
},
};
</script>
自定义 Checkbox 组件
封装一个自定义 Checkbox 组件,提高复用性和灵活性。
<template>
<label class="custom-checkbox">
<input
type="checkbox"
:checked="checked"
@change="$emit('change', $event.target.checked)"
/>
<span class="checkmark"></span>
{{ label }}
</label>
</template>
<script>
export default {
props: {
checked: {
type: Boolean,
default: false,
},
label: {
type: String,
default: '',
},
},
};
</script>
<style>
.custom-checkbox {
display: flex;
align-items: center;
cursor: pointer;
}
.checkmark {
display: inline-block;
width: 16px;
height: 16px;
border: 1px solid #ccc;
margin-right: 8px;
}
.custom-checkbox input {
display: none;
}
.custom-checkbox input:checked + .checkmark {
background-color: #42b983;
}
</style>
使用第三方库
如果需要更复杂的功能或样式,可以使用第三方库如 element-ui 或 vuetify。
<template>
<div>
<el-checkbox v-model="checked">Checkbox</el-checkbox>
</div>
</template>
<script>
import { ElCheckbox } from 'element-ui';
export default {
components: {
ElCheckbox,
},
data() {
return {
checked: false,
};
},
};
</script>
以上方法可以根据具体需求选择使用,原生实现适合简单场景,自定义组件提供更多灵活性,而第三方库则适合快速开发。






