当前位置:首页 > VUE

Vue实现级联多选

2026-01-08 16:05:40VUE

Vue实现级联多选的方法

使用Element UI的Cascader组件

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

<template>
  <el-cascader
    v-model="selectedOptions"
    :options="options"
    :props="{ multiple: true, checkStrictly: true }"
    clearable
  ></el-cascader>
</template>

<script>
export default {
  data() {
    return {
      selectedOptions: [],
      options: [
        {
          value: 'guide',
          label: 'Guide',
          children: [
            { value: 'disciplines', label: 'Disciplines' },
            { value: 'navigation', label: 'Navigation' }
          ]
        }
      ]
    }
  }
}
</script>

自定义递归组件实现

通过递归组件可以灵活控制级联逻辑。定义子组件时通过v-for渲染子节点,利用v-model实现数据双向绑定。

<template>
  <div>
    <div v-for="item in options" :key="item.value">
      <input 
        type="checkbox" 
        v-model="selectedValues" 
        :value="item.value"
      >
      {{ item.label }}
      <cascade-node 
        v-if="item.children" 
        :options="item.children"
        v-model="selectedValues"
      />
    </div>
  </div>
</template>

<script>
export default {
  name: 'CascadeNode',
  props: {
    options: Array,
    value: Array
  },
  computed: {
    selectedValues: {
      get() { return this.value },
      set(val) { this.$emit('input', val) }
    }
  }
}
</script>

使用第三方库vue-treeselect

vue-treeselect专为Vue设计,支持多选、异步加载等功能。安装后通过配置multipleflat模式实现级联多选。

Vue实现级联多选

npm install @riophae/vue-treeselect
<template>
  <treeselect
    v-model="value"
    :multiple="true"
    :options="options"
    :flat="true"
  />
</template>

<script>
import Treeselect from '@riophae/vue-treeselect'
export default {
  components: { Treeselect },
  data() {
    return {
      value: [],
      options: [
        {
          id: 'a',
          label: 'a',
          children: [
            { id: 'aa', label: 'aa' }
          ]
        }
      ]
    }
  }
}
</script>

注意事项

  • 大数据量时建议使用异步加载
  • 选中状态维护需考虑父子节点关联逻辑
  • 移动端需注意交互体验优化
  • 自定义样式时注意层级关系

以上方法可根据项目需求选择,Element UI适合快速集成,自定义组件灵活性更高,vue-treeselect提供丰富的扩展功能。

标签: 多选级联
分享给朋友:

相关文章

vue实现多选全选

vue实现多选全选

Vue 实现多选全选功能 数据准备 在 Vue 中实现多选全选功能,需要准备两个关键数据:items(待选项列表)和selectedItems(已选项列表)。items通常从后端 API 获取或前端静…

vue实现多选和全选

vue实现多选和全选

Vue 实现多选和全选功能 多选和全选是常见的交互功能,可以通过 Vue 的数据绑定和事件处理轻松实现。以下是一个完整的实现方案: 数据准备 在 Vue 的 data 中定义两个关键数据项: it…

vue实现多选样式

vue实现多选样式

Vue 实现多选样式的方法 在 Vue 中实现多选样式可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以轻松实现多选功能。当用户勾…

vue实现单选多选答题

vue实现单选多选答题

Vue实现单选答题 创建单选答题组件需要绑定v-model到同一个变量,确保同一时间只能选中一个选项。以下是一个基础实现示例: <template> <div>…

react实现级联导航

react实现级联导航

实现级联导航的基本思路 级联导航通常指多级联动的菜单或选择器,例如地区选择(省-市-区)或分类选择。React中可通过状态管理和组件嵌套实现。 数据结构设计 采用树形结构存储导航数据,例如: co…

react native多选实现

react native多选实现

React Native 多选实现方法 在 React Native 中实现多选功能可以通过多种方式完成,以下是几种常见的方法: 使用 FlatList 或 SectionList 结合 Touch…