当前位置:首页 > VUE

vue实现多条件多选

2026-01-22 17:22:23VUE

Vue 实现多条件多选

使用 v-model 绑定多选数组

在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。复选框的 value 属性会被添加到数组中,取消勾选时则从数组中移除。

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input 
        type="checkbox" 
        v-model="selectedOptions" 
        :value="option.value"
      >
      {{ 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>

动态生成多选条件

如果需要根据后端数据或用户输入动态生成多选条件,可以结合 v-for 和计算属性实现。

<template>
  <div>
    <div v-for="category in categories" :key="category.id">
      <h3>{{ category.name }}</h3>
      <label v-for="item in category.items" :key="item.id">
        <input 
          type="checkbox" 
          v-model="selectedItems" 
          :value="item.id"
        >
        {{ item.name }}
      </label>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      categories: [
        {
          id: 1,
          name: '颜色',
          items: [
            { id: 'red', name: '红色' },
            { id: 'blue', name: '蓝色' }
          ]
        },
        {
          id: 2,
          name: '尺寸',
          items: [
            { id: 's', name: '小号' },
            { id: 'l', name: '大号' }
          ]
        }
      ],
      selectedItems: []
    };
  }
};
</script>

多条件筛选逻辑

实现多条件筛选时,可以通过计算属性对数据进行过滤。以下是一个结合多选条件筛选列表的例子。

<template>
  <div>
    <div>
      <h3>筛选条件</h3>
      <label v-for="filter in filters" :key="filter.id">
        <input 
          type="checkbox" 
          v-model="activeFilters" 
          :value="filter.id"
        >
        {{ filter.name }}
      </label>
    </div>
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      filters: [
        { id: 'featured', name: '精选' },
        { id: 'new', name: '新品' }
      ],
      activeFilters: [],
      items: [
        { id: 1, name: '商品1', tags: ['featured'] },
        { id: 2, name: '商品2', tags: ['new'] },
        { id: 3, name: '商品3', tags: ['featured', 'new'] }
      ]
    };
  },
  computed: {
    filteredItems() {
      if (this.activeFilters.length === 0) {
        return this.items;
      }
      return this.items.filter(item => 
        this.activeFilters.every(filter => 
          item.tags.includes(filter)
        )
      );
    }
  }
};
</script>

使用第三方组件库

如果需要更丰富的多选功能(如搜索、分组等),可以集成第三方组件库如 Element UIVuetify

Element UI 为例:

vue实现多条件多选

<template>
  <div>
    <el-checkbox-group v-model="checkedCities">
      <el-checkbox 
        v-for="city in cities" 
        :key="city" 
        :label="city"
      >
        {{ city }}
      </el-checkbox>
    </el-checkbox-group>
  </div>
</template>

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

注意事项

  • 确保多选框的 value 唯一,避免重复值导致状态混乱。
  • 如果选项数据来自后端,需处理异步加载时的初始状态。
  • 对于大量选项,考虑添加搜索或分页功能优化体验。

标签: 多条多选
分享给朋友:

相关文章

vue 实现列表多选

vue 实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动处理多选逻辑。适用于复选框(checkbox)场景。 <template> &…

vue 实现多选按钮

vue 实现多选按钮

实现多选按钮的基本方法 在Vue中实现多选按钮可以通过v-model绑定数组来管理选中状态。以下是一个基础示例: <template> <div> <lab…

vue 实现按钮多选

vue 实现按钮多选

实现按钮多选功能 在Vue中实现按钮多选功能可以通过以下方法完成,主要依赖v-model绑定数组和v-for动态渲染按钮。 数据绑定与渲染 定义一个数组selectedItems用于存储选中的按钮值…

vue实现多选日历

vue实现多选日历

Vue 实现多选日历 使用 Vue 实现多选日历功能可以借助现有的日历库或手动构建。以下是两种常见方法: 使用第三方库(如 V-Calendar) 安装 V-Calendar 库: npm ins…

vue实现左右多选框

vue实现左右多选框

Vue 实现左右多选框功能 实现左右多选框功能可以通过 Vue 的双向数据绑定和事件处理机制来完成。以下是一个完整的实现方案,包含组件结构、数据管理和交互逻辑。 组件结构设计 <templat…

vue实现多选添加样式

vue实现多选添加样式

Vue 实现多选添加样式的方法 在 Vue 中实现多选并添加样式可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-for 和 v-model 结合 通过 v-for 渲染列表项,结合 v-…