当前位置:首页 > VUE

Vue实现级联多选

2026-02-11 06:28:48VUE

Vue实现级联多选的方法

使用Element UI的Cascader组件

Element UI提供了el-cascader组件,支持多选功能。通过设置props属性中的multipletrue即可启用多选。

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

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

自定义级联多选组件

如果需要更灵活的控制,可以基于el-selectel-tree自定义级联多选组件。通过组合这两个组件,实现多级选择功能。

<template>
  <el-select
    v-model="selectedValues"
    multiple
    collapse-tags
    placeholder="请选择"
  >
    <el-option :value="treeDataRef">
      <el-tree
        ref="tree"
        :data="treeData"
        show-checkbox
        node-key="id"
        :props="defaultProps"
        @check-change="handleCheckChange"
      />
    </el-option>
  </el-select>
</template>

<script>
export default {
  data() {
    return {
      selectedValues: [],
      treeData: [
        {
          id: 1,
          label: '一级 1',
          children: [
            { id: 4, label: '二级 1-1' }
          ]
        }
      ],
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    }
  },
  methods: {
    handleCheckChange(data, checked, indeterminate) {
      this.selectedValues = this.$refs.tree.getCheckedNodes()
    }
  }
}
</script>

使用第三方库vue-treeselect

vue-treeselect是一个专门用于树形选择和多选的Vue组件,支持级联多选功能。

安装依赖:

npm install @riophae/vue-treeselect

使用示例:

<template>
  <treeselect
    v-model="value"
    :multiple="true"
    :options="options"
  />
</template>

<script>
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'

export default {
  components: { Treeselect },
  data() {
    return {
      value: null,
      options: [
        {
          id: 'a',
          label: 'a',
          children: [
            { id: 'aa', label: 'aa' }
          ]
        }
      ]
    }
  }
}
</script>

注意事项

  • 数据结构需要符合组件要求,通常包含value/labelchildren字段
  • 多选时注意性能问题,大数据量情况下建议使用虚拟滚动
  • 清除选择时可能需要手动处理,特别是自定义组件时
  • 移动端适配可能需要额外样式调整

以上方法可以根据项目需求和技术栈选择合适的实现方案。Element UI方案适合快速集成,自定义组件灵活性更高,而vue-treeselect提供了更专业的树形选择功能。

Vue实现级联多选

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

相关文章

vue 实现多选框

vue 实现多选框

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

vue实现多选答题

vue实现多选答题

实现多选答题功能 在Vue中实现多选答题功能,可以通过以下方法完成: 数据准备 定义一个questions数组,每个问题包含题目和选项,选项是一个对象数组,每个选项有文本和是否被选中的状态。 da…

Vue实现级联多选

Vue实现级联多选

Vue 实现级联多选的方法 使用 Element UI 的 Cascader 组件 Element UI 提供了 el-cascader 组件,支持多选功能。通过设置 props 的 multiple…

vue实现循环多选

vue实现循环多选

实现循环多选的方法 使用v-for渲染选项 通过v-for循环渲染复选框或列表项,绑定v-model到数组实现多选。例如: <template> <div v-for="ite…

vue按钮实现多选

vue按钮实现多选

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

vue实现列表多选

vue实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以轻松实现多选功能。当复选框被选中或取消选中时,数组会自动更新。 <template>…