当前位置:首页 > VUE

vue实现列表多选

2026-01-17 07:21:31VUE

Vue 实现列表多选的方法

使用 v-model 绑定数组

通过 v-model 绑定一个数组,可以轻松实现多选功能。当复选框被选中或取消选中时,数组会自动更新。

<template>
  <div>
    <div v-for="item in items" :key="item.id">
      <input 
        type="checkbox" 
        :id="item.id" 
        :value="item.value" 
        v-model="selectedItems"
      >
      <label :for="item.id">{{ item.label }}</label>
    </div>
    <p>已选中的项: {{ selectedItems }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, label: '选项1', value: 'value1' },
        { id: 2, label: '选项2', value: 'value2' },
        { id: 3, label: '选项3', value: 'value3' },
      ],
      selectedItems: []
    };
  }
};
</script>

使用 v-for 渲染多选列表

结合 v-for 动态渲染列表,并为每个选项绑定 v-model 到数组。

<template>
  <div>
    <ul>
      <li v-for="option in options" :key="option.id">
        <input 
          type="checkbox" 
          v-model="selectedOptions" 
          :value="option.id"
        >
        {{ option.text }}
      </li>
    </ul>
    <p>选中的选项 ID: {{ selectedOptions }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { id: 1, text: '选项A' },
        { id: 2, text: '选项B' },
        { id: 3, text: '选项C' },
      ],
      selectedOptions: []
    };
  }
};
</script>

使用第三方组件库

如果需要更丰富的功能(如全选、反选等),可以使用第三方组件库如 Element UIVuetify

Element UI 为例:

<template>
  <div>
    <el-checkbox-group v-model="checkedCities">
      <el-checkbox 
        v-for="city in cities" 
        :label="city" 
        :key="city"
      >
        {{ city }}
      </el-checkbox>
    </el-checkbox-group>
    <p>选中的城市: {{ checkedCities }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      cities: ['北京', '上海', '广州', '深圳'],
      checkedCities: []
    };
  }
};
</script>

自定义多选逻辑

如果需要更复杂的逻辑(如动态禁用某些选项),可以手动处理选中状态。

<template>
  <div>
    <div v-for="item in items" :key="item.id">
      <input 
        type="checkbox" 
        :checked="isSelected(item.id)" 
        @change="toggleSelection(item.id)"
        :disabled="item.disabled"
      >
      <label>{{ item.name }}</label>
    </div>
    <p>选中的 ID: {{ selectedIds }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '苹果', disabled: false },
        { id: 2, name: '香蕉', disabled: true },
        { id: 3, name: '橙子', disabled: false },
      ],
      selectedIds: []
    };
  },
  methods: {
    isSelected(id) {
      return this.selectedIds.includes(id);
    },
    toggleSelection(id) {
      const index = this.selectedIds.indexOf(id);
      if (index === -1) {
        this.selectedIds.push(id);
      } else {
        this.selectedIds.splice(index, 1);
      }
    }
  }
};
</script>

注意事项

  • 确保 v-model 绑定的数组初始化为空数组。
  • 动态绑定时,注意 :value 的值类型(字符串、数字或对象)。
  • 如果需要禁用某些选项,可以通过 :disabled 属性控制。

vue实现列表多选

标签: 多选列表
分享给朋友:

相关文章

vue多选实现

vue多选实现

Vue 多选实现方法 基础实现(v-model + multiple) 在 Vue 中实现多选可以通过 <select> 元素的 multiple 属性结合 v-model 完成。v-mo…

vue实现多选

vue实现多选

Vue 实现多选功能 在 Vue 中实现多选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定到一个数组,可以实现多选功能。适用于复选框组(…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表 在 Vue 中实现搜索列表功能,通常需要结合数据绑定、计算属性和事件监听。以下是一个完整的实现方案: 数据准备与模板结构 <template> <div&…

Vue实现级联多选

Vue实现级联多选

Vue实现级联多选的方法 使用Element UI的Cascader组件 Element UI提供了Cascader组件,支持级联选择功能。通过配置props属性可以自定义节点字段名,结合checkS…

vue 实现长列表

vue 实现长列表

vue 实现长列表的优化方法 使用虚拟滚动技术,只渲染可视区域内的元素,大幅减少DOM节点数量。通过计算滚动位置动态更新显示内容,降低内存占用和渲染压力。 <template> &…

vue实现多选联动

vue实现多选联动

实现多选联动的基本思路 在Vue中实现多选联动功能,通常需要利用v-model绑定数据、监听选项变化以及动态更新关联选项。以下是几种常见的实现方式: 基于v-model和计算属性 通过v-model…