当前位置:首页 > VUE

Vue实现级联多选

2026-01-08 16:05:40VUE

Vue实现级联多选的方法

使用Element UI的Cascader组件

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

Vue实现级联多选

<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模式实现级联多选。

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实现div多选

vue实现div多选

Vue 实现 Div 多选功能 基础实现思路 通过 Vue 的数据绑定和事件处理,可以轻松实现 div 的多选功能。核心是维护一个数组来存储选中的 div 的标识符,并通过 v-bind 和 v-on…

vue实现级联菜单

vue实现级联菜单

实现级联菜单的基本思路 Vue中实现级联菜单通常需要以下关键点:数据结构的组织、组件间的通信、动态渲染子菜单。一般采用递归组件或逐层渲染的方式实现。 数据结构设计 级联菜单的数据通常为嵌套结构,例…

vue按钮实现多选

vue按钮实现多选

Vue 按钮实现多选的方法 在 Vue 中实现按钮多选功能,可以通过绑定 v-model 到数组或对象,结合样式控制来实现。以下是几种常见方法: 方法一:使用 v-model 绑定数组 通过…

vue实现单选多选

vue实现单选多选

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

vue实现级联选择

vue实现级联选择

Vue 实现级联选择的方法 使用 Element UI 的 Cascader 组件 Element UI 提供了 el-cascader 组件,支持级联选择功能。以下是一个基本示例: <te…

vue 如何实现多选

vue 如何实现多选

Vue 实现多选的几种方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。当用户勾选多个选项时,选中的值会自动添加到数组中。 <temp…