AvueAvue
首页
  • 开发指南
  • Skill开发
  • 在线测试工具
  • Form组件
  • Crud组件
  • Default组件
  • Data组件
  • Component组件
产品
工作台
授权
联系
2.x文档
个人支付接口
首页
  • 开发指南
  • Skill开发
  • 在线测试工具
  • Form组件
  • Crud组件
  • Default组件
  • Data组件
  • Component组件
产品
工作台
授权
联系
2.x文档
个人支付接口
  • 基础组件使用约定
  • Input 输入框
  • InputOtp 一次性密码输入
  • InputTree 树选择
  • InputNumber 数字输入框
  • InputColor 颜色选择
  • InputIcon 图标选择
  • InputMap 地图选点
  • InputTable 表格选择
  • Array 数组输入
  • Img 媒体地址输入
  • Url 链接输入
  • Select 选择框
  • Radio 单选框
  • Checkbox 多选框
  • Switch 开关
  • Date 日期时间
  • Time 时间
  • Rate 评分
  • Slider 滑块
  • Cascader 级联选择器
  • Upload 附件上传

Cascader 级联选择器

avue-cascader:默认路径数组;emitPath: false 时为节点值;multiple: true 时为多个路径或节点值的数组。

通用属性、字典与事件见 基础组件使用约定。模板属性可写为 kebab-case,Form 配置对象使用 camelCase。

基础用法

效果预览可直接操作下方示例

独立组件通过 v-model 绑定单个字段;在 Form 中使用时,将相应配置放入 column。

正在加载示例…
<template>
  <el-row :span="24">
    <el-col :span="6">
      值:{{ form }}<br />
      <avue-cascader v-model="form"
                     :dic="dic"></avue-cascader>
    </el-col>
    <el-col :span="24"></el-col>
    <el-col :span="6">
      返回单节点:{{ form3 }}<br />
      <avue-cascader :emit-path="false"
                     check-strictly
                     v-model="form3"
                     :dic="dic"></avue-cascader>
    </el-col>
    <el-col :span="24"></el-col>
    <el-col :span="6">
      仅显示最后一级值:{{ form }}<br />
      <avue-cascader v-model="form"
                     :show-all-levels="false"
                     :dic="dic"></avue-cascader>
    </el-col>
    <el-col :span="24"></el-col>
    <el-col :span="6">
      多选:{{ form2 }}<br />
      <avue-cascader v-model="form2"
                     multiple
                     :dic="dic"></avue-cascader>
    </el-col>
    <el-col :span="24"></el-col>
    <el-col :span="6">
      选择任意一级选项:{{ form }}<br />
      <avue-cascader v-model="form"
                     check-strictly
                     :dic="dic"></avue-cascader>
    </el-col>
    <el-col :span="24"></el-col>
    <el-col :span="6">
      懒加载值:{{ form1 }}<br />
      <avue-cascader lazy
                     :lazy-load="lazyLoad"
                     :props="props"
                     v-model="form1"></avue-cascader>
    </el-col>
  </el-row>
</template>

<script setup>
import { ref } from 'vue';
import axios from 'axios';

const form = ref(["zhinan", "shejiyuanze", "yizhi"])
const form1 = ref(["110000", "110100", "110101"])
const form2 = ref([["zhinan", "shejiyuanze", "yizhi"]])
const form3 = ref('zhinan')
const props = {
  label: 'name',
  value: 'code'
}
const dic = [{
  value: 'zhinan',
  label: '指南',
  children: [{
    value: 'shejiyuanze',
    label: '设计原则',
    children: [{
      value: 'yizhi',
      label: '一致'
    }, {
      value: 'fankui',
      label: '反馈'
    }]
  }]
}]

const lazyLoad = (node, resolve) => {
  let baseUrl = 'https://api.avuejs.com/area'
  let stop_level = 2
  let level = node.level
  let data = node.data || {}
  let code = data.code
  let list = []
  let callback = () => {
    resolve((list || []).map(ele => {
      return Object.assign(ele, {
        leaf: level >= stop_level
      })
    }))
  }
  if (level === 0) {
    axios.get(`${baseUrl}/getProvince`).then(res => {
      list = res.data.data
      callback()
    })
  } else if (level === 1) {
    axios.get(`${baseUrl}/getCity/${code}`).then(res => {
      list = res.data.data
      callback()
    })
  } else if (level === 2) {
    axios.get(`${baseUrl}/getArea/${code}`).then(res => {
      list = res.data.data
      callback()
    })
  } else {
    callback()
  }
}
</script>

属性

属性类型默认值说明
dic / propsarray / object[] / 默认映射树形字典与键映射
emitPathbooleantrue保存完整路径
multiplebooleanfalse多选
showAllLevelsbooleantrue显示全部层级,不改变绑定值
checkStrictlybooleanfalse允许独立选择父节点
expandTriggerstringhoverhover / click
filterablebooleanfalse搜索已加载节点
lazy / lazyLoadboolean / functionfalse / —lazyLoad(node, resolve) 需调用 resolve(list)
tags / collapseTags / collapseTagsTooltipbooleanfalse折叠多选标签及提示
maxCollapseTagsnumber—标签最大显示数
effectstringlightlight / dark
virtualScroll / fitInputWidthbooleanundefined虚拟滚动与弹层宽度,需底层版本支持
height / itemSizenumber—面板与虚拟项高度

默认插槽为 { data, node };实例 getCheckedNodes(leafOnly = false) 获取已选节点。参见 Cascader 表单。

最后更新:
贡献者: smallwei
Prev
Slider 滑块
Next
Upload 附件上传