当前位置:首页 > VUE

vue实现单元多选

2026-01-19 09:09:26VUE

Vue 实现单元多选

在 Vue 中实现单元多选功能,可以通过多种方式完成。以下是几种常见的实现方法,包括使用原生 HTML 复选框、自定义组件以及第三方库。

使用原生 HTML 复选框

通过 v-model 绑定数组实现多选功能。选中项的 value 会被自动添加到数组中。

vue实现单元多选

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input
        type="checkbox"
        :value="option.value"
        v-model="selectedOptions"
      />
      {{ option.label }}
    </label>
    <p>已选择: {{ selectedOptions }}</p>
  </div>
</template>

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

使用自定义多选组件

通过自定义组件封装多选逻辑,提高复用性。

<template>
  <div>
    <MultiSelect
      :options="options"
      v-model="selectedOptions"
    />
    <p>已选择: {{ selectedOptions }}</p>
  </div>
</template>

<script>
import MultiSelect from './MultiSelect.vue';

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

自定义 MultiSelect.vue 组件:

vue实现单元多选

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input
        type="checkbox"
        :value="option.value"
        @change="handleChange"
        :checked="isChecked(option.value)"
      />
      {{ option.label }}
    </label>
  </div>
</template>

<script>
export default {
  props: {
    options: Array,
    value: Array,
  },
  methods: {
    isChecked(value) {
      return this.value.includes(value);
    },
    handleChange(event) {
      const value = event.target.value;
      const newSelected = [...this.value];
      if (event.target.checked) {
        newSelected.push(value);
      } else {
        const index = newSelected.indexOf(value);
        if (index > -1) {
          newSelected.splice(index, 1);
        }
      }
      this.$emit('input', newSelected);
    },
  },
};
</script>

使用第三方库

使用如 v-selectelement-ui 等第三方库快速实现多选功能。

element-ui 为例:

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

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

注意事项

  • 确保 v-model 绑定的是数组类型,否则多选功能无法正常工作。
  • 如果选项数据动态加载,确保在数据加载完成后初始化选中状态。
  • 自定义组件时,注意处理 v-model 的双向绑定逻辑。

以上方法可以根据实际需求选择适合的实现方式。原生 HTML 复选框适合简单场景,自定义组件适合需要复用的场景,而第三方库可以快速实现复杂功能。

标签: 多选单元
分享给朋友:

相关文章

vue 实现多选

vue 实现多选

Vue 实现多选的方法 在 Vue 中实现多选功能可以通过多种方式完成,以下介绍几种常见的方法。 使用复选框(Checkbox)实现多选 通过 v-model 绑定数组来实现多选功能,适用于表单中的…

vue 实现多选框

vue 实现多选框

实现多选框的基础用法 在Vue中可以使用v-model指令绑定到数组类型的数据,实现多选框功能。基础示例代码如下: <template> <div> <in…

vue图片实现多选

vue图片实现多选

Vue 图片多选实现方法 在 Vue 中实现图片多选功能可以通过以下几种方式完成,具体取决于项目需求和复杂度。 使用 v-model 和数组存储选中状态 通过 v-model 绑定一个数组来记录选…

vue实现多选下拉

vue实现多选下拉

Vue 实现多选下拉 使用 Vue 实现多选下拉可以通过原生 HTML <select> 元素结合 Vue 的双向绑定,或者使用第三方组件库如 Element UI、Vuetify 等。以…

vue实现单选多选

vue实现单选多选

Vue 实现单选功能 使用 v-model 绑定单选按钮的值,确保同一组单选按钮的 name 属性相同。 <template> <div> <lab…

vue实现active多选

vue实现active多选

实现多选高亮(active)效果 在Vue中实现多选高亮效果可以通过以下方式完成: 使用v-for和v-bind:class 通过动态绑定class实现选中状态切换,适用于列表项多选场景: <…