当前位置:首页 > VUE

Vue实现级联多选

2026-01-15 03:28:51VUE

Vue 实现级联多选的方法

使用 Element UI 的 Cascader 组件

Element UI 提供了 el-cascader 组件,支持多选功能。通过设置 propsmultiple 属性为 true 即可启用多选模式。

安装 Element UI:

npm install element-ui

代码示例:

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

<script>
export default {
  data() {
    return {
      selectedOptions: [],
      options: [
        {
          value: 'zhinan',
          label: '指南',
          children: [
            { value: 'shejiyuanze', label: '设计原则' },
            { value: 'daohang', label: '导航' }
          ]
        }
      ],
      props: {
        multiple: true,
        checkStrictly: true // 允许选择任意一级
      }
    };
  }
};
</script>

使用 Ant Design Vue 的 Cascader 组件

Ant Design Vue 的 a-cascader 组件也支持多选功能,通过设置 multiple 属性即可。

安装 Ant Design Vue:

npm install ant-design-vue

代码示例:

<template>
  <a-cascader
    v-model="selectedOptions"
    :options="options"
    multiple
    placeholder="请选择"
  />
</template>

<script>
export default {
  data() {
    return {
      selectedOptions: [],
      options: [
        {
          value: 'zhejiang',
          label: '浙江',
          children: [
            { value: 'hangzhou', label: '杭州' },
            { value: 'ningbo', label: '宁波' }
          ]
        }
      ]
    };
  }
};
</script>

自定义实现级联多选

如果需要更灵活的控制,可以自定义实现级联多选功能。通过递归组件和动态加载数据的方式实现。

代码示例:

<template>
  <div>
    <div v-for="(item, index) in options" :key="index">
      <input
        type="checkbox"
        v-model="selectedValues"
        :value="item.value"
      />
      <label>{{ item.label }}</label>
      <div v-if="item.children" style="margin-left: 20px">
        <cascader-multi
          :options="item.children"
          v-model="selectedValues"
        />
      </div>
    </div>
  </div>
</template>

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

动态加载数据

对于大数据量的级联选择,可以采用动态加载数据的方式优化性能。

代码示例:

Vue实现级联多选

<template>
  <el-cascader
    v-model="selectedOptions"
    :props="props"
  ></el-cascader>
</template>

<script>
export default {
  data() {
    return {
      selectedOptions: [],
      props: {
        multiple: true,
        lazy: true,
        lazyLoad(node, resolve) {
          const { level } = node;
          setTimeout(() => {
            const nodes = Array.from({ length: level + 1 })
              .map(() => ({
                value: Math.random(),
                label: `选项${level + 1}`,
                leaf: level >= 2
              }));
            resolve(nodes);
          }, 1000);
        }
      }
    };
  }
};
</script>

注意事项

  • 多选模式下,数据绑定通常为数组形式。
  • 动态加载数据时,注意处理加载状态和错误情况。
  • 自定义实现时,确保组件逻辑清晰,避免性能问题。

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

相关文章

vue图片实现多选

vue图片实现多选

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

vue实现div多选

vue实现div多选

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

vue按钮实现多选

vue按钮实现多选

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

vue怎么实现多选

vue怎么实现多选

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

vue实现全选 多选

vue实现全选 多选

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

vue实现多选框

vue实现多选框

基础实现 使用 v-model 绑定数组实现多选功能。在 Vue 中,多选框的 value 属性会随选中状态自动更新到绑定的数组。 <template> <div>…