当前位置:首页 > 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自定义级联多选组件。通过组合这两个组件,实现多级选择功能。

Vue实现级联多选

<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组件,支持级联多选功能。

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提供了更专业的树形选择功能。

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

相关文章

php 实现级联菜单

php 实现级联菜单

实现级联菜单的方法 级联菜单(Cascading Dropdown)通常用于根据前一个选择动态加载下一个菜单的选项。以下是使用PHP和JavaScript(Ajax)实现级联菜单的详细方法。 数据库…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…

vue实现单选多选

vue实现单选多选

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

vue实现多选互斥

vue实现多选互斥

Vue 实现多选互斥的方法 多选互斥指的是在多个选项中,允许选择多个选项,但某些选项之间不能同时被选中。以下是几种实现方式: 使用计算属性和监听器 通过计算属性和监听器动态控制选项的互斥逻辑。定义一…

vue表格实现多选

vue表格实现多选

实现多选表格的基础方法 在Vue中实现表格多选功能,通常需要结合el-table组件(Element UI)或v-data-table组件(Vuetify)。以下是基于Element UI的实现示例:…

vue实现多选功能

vue实现多选功能

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