Skip to content

mosowe-cascade 级联选择

uniapp/uni_modules组件

下载地址

TIP

支持本地,懒加载
依赖组件:uni-popup

兼容性

平台androidios微信小程序H5
兼容

props

属性类型说明默认
modelValuelistItem[]已选值-
listlistItem[]展示列表-
popupTitlestring级联弹框标题请选择
placeholderstring未选择时文本框占位文案请选择
localboolean本地数据,非懒加载false

listItem

属性类型说明
textstring选项文案
valuestring | number
pidstring | number | null | undefined父级id
isLeafboolean是否叶子节点
childrenlistItem[]子集列表

emits

事件名说明
confirm点击弹框确定的时候触发,参数为当前已选值:(data:listItem[])=>void
nodeClick节点点击,三个参数,一个当前节点node,当前层级值level,回调函数callBack,回调函数接收一个数组用于下一级展示:(node: listItem | null, level: number, callBack: (data:listItem[]) => void) => void

slots

插槽名说明
default文本域插槽

示例代码

vue
<template>
  <view class="title">懒加载,无默认数据</view>
  <mosowe-cascade
    v-model="noDefaultValue"
    :list="firstList"
    @nodeClick="nodeClick"
    @confirm="confirm"
  ></mosowe-cascade>
</template>

<script setup lang="ts">
  import { ref } from 'vue';
  // 无默认数据
  const noDefaultValue = ref([]);
  const firstList = ref([
    {
      text: '初始-1',
      value: 1,
      pid: 0,
      isLeaf: false,
      children: []
    },
    {
      text: '初始-2',
      value: 2,
      pid: 0,
      isLeaf: false,
      children: []
    }
  ]);
  const nodeClick = (e: any, level: number, callBack: (data: any[]) => void) => {
    setTimeout(() => {
      const list = Array.from({ length: 20 }).map((item: any, index: number) => {
        return {
          text: `${e.text}(${index})-${level}`,
          value: e.value + '-' + index,
          isLeaf: level >= 2 ? true : false,
          pid: e.value,
          children: []
        };
      });
      callBack(list);
    }, 1000);
  };
  const confirm = data => {
    console.log(data);
  };
</script>

贡献者

mosowe

文档版本 v1.0.1