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

使用示例:

Vue实现级联多选

<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图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

vue 实现多选框

vue 实现多选框

实现多选框的基础用法 在Vue中可以使用v-model指令绑定到数组类型的数据,实现多选框功能。基础示例代码如下: <template> <div> <in…

jquery 多选

jquery 多选

jQuery 多选实现方法 使用 prop() 方法实现多选 通过 prop() 方法可以批量设置多个复选框的选中状态。以下是一个示例代码: $('input[type="checkbox"]').…

vue实现级联选择

vue实现级联选择

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

vue实现active多选

vue实现active多选

实现多选高亮(active)效果 在Vue中实现多选高亮效果可以通过以下方式完成: 使用v-for和v-bind:class 通过动态绑定class实现选中状态切换,适用于列表项多选场景: <…

vue实现全选 多选

vue实现全选 多选

Vue实现全选与多选功能 在Vue中实现全选和多选功能通常涉及数据绑定、事件处理和状态管理。以下是两种常见的实现方式: 基于v-model的双向绑定 使用v-model绑定复选框组,结合计算…