当前位置:首页 > 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>

自定义多选逻辑

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

vue实现列表多选

<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-for 指令实现列表循环渲染。以下是几种常见的实现方式: 基础列表渲染 <template> <ul>…

vue列表查询实现

vue列表查询实现

实现Vue列表查询功能 基本数据绑定与渲染 在Vue中实现列表查询,首先需要定义数据源和查询条件。通过v-model绑定搜索输入框,使用计算属性过滤列表。 <template> &l…

vue实现列表循环

vue实现列表循环

列表循环的实现方式 在Vue中实现列表循环主要依赖于v-for指令,该指令基于源数据多次渲染元素或模板块。 基础数组循环 使用v-for遍历数组时,语法为item in items或(item, i…

vue实现列表分页

vue实现列表分页

Vue 列表分页实现方法 基础分页实现 安装依赖(如使用第三方库) npm install vue-paginate 模板部分示例 <template> <div>…

vue实现列表全选

vue实现列表全选

实现全选功能的基本思路 在Vue中实现列表全选功能,通常需要结合v-model和计算属性来管理选中状态。全选按钮的状态与列表中所有项的选中状态相互关联。 基础实现方法 准备一个数据列表和对应的选中状…

vue列表展开实现

vue列表展开实现

Vue 列表展开实现方法 使用 v-for 和 v-show 控制展开状态 通过 v-for 渲染列表项,配合 v-show 控制子内容的显示隐藏。需要为每个列表项维护一个展开状态。 <tem…