element UI Cascader 动态加载 lazyload 及 回显

element UI Cascader 动态加载 lazyload
页面

在这里插入图片描述

回显: 使用 :placeholder属性(完美避过 嘻嘻)

在这里插入图片描述

数据: 一级省要给初始默认值: options

在这里插入图片描述

懒加载: lazy: true, leaf 为true 结束 节点, element 提供的 props 中的属性和方法
data是个函数 注意调用方法时的 this指向

在这里插入图片描述在这里插入图片描述

观察值的变化 , 下面的函数可以监听获取 节点ID&&中文值

在这里插入图片描述

获取中文值 label
 this.$refs['invoice'].getCheckedNodes()[0].parent.parent.label  //省
        this.$refs['invoice'].getCheckedNodes()[0].parent.label //市
        this.$refs['invoice'].getCheckedNodes()[0].label //区
  props: {
        value: 'area_id',
        label: 'name',
        lazy: true,
        lazyLoad(node, resolve) {
          const level = node.level
          if (level === 1) {
            const id = node.value
            _self.$apis.user.getArea({ parent_id: id }).then(res => {
              const { code, msg } = res
              const { list } = res.data
              if (code === 0) {
                const nodes = list
                resolve(nodes)
              } else {
                this.$message.error(msg)
              }
            })
          } else if (level == 2) {
            console.log(node.level)
            const id = node.value
            _self.$apis.user.getArea({ parent_id: id }).then(res => {
              const { code, msg } = res
              const { list } = res.data
              if (code === 0) {
                const nodes = list
                nodes.forEach(item => {
                  item.leaf = level >= 2
                })
                resolve(nodes)
              }
            })
          }
        }
      }
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
你可以使用 Element UICascader 组件来实现动态加载Cascader 组件支持通过 `lazy` 属性来实现动态加载数据。当用户点击父级选项时,你可以通过监听 `load` 事件来触发加载子级选项的数据。 首先,你需要在父级选项的 `load` 事件中调用异步函数加载子级选项的数据。在加载完成后,将数据赋值给子级选项,并将 `loading` 属性设置为 `false`。 以下是一个简单的示例代码: ```html <template> <el-cascader :options="options" :load-data="loadData" @load="handleLoad" ></el-cascader> </template> <script> export default { data() { return { options: [] // 父级选项数据 }; }, methods: { loadData(selectedOptions) { const targetOption = selectedOptions[selectedOptions.length - 1]; // 模拟异步加载数据 setTimeout(() => { targetOption.loading = false; targetOption.children = [ { label: '子级选项1', value: '1' }, { label: '子级选项2', value: '2' }, { label: '子级选项3', value: '3' } ]; }, 1000); }, handleLoad(selectedOptions) { const targetOption = selectedOptions[selectedOptions.length - 1]; targetOption.loading = true; } } }; </script> ``` 在这个示例中,当用户点击父级选项时,会触发 `load` 事件,在 `handleLoad` 方法中设置 `loading` 属性为 `true`,然后在 `loadData` 方法中加载子级选项的数据,并将加载完成后的数据赋值给子级选项。 你可以根据自己的需求修改加载数据的方式和逻辑。 希望能够帮到你!如有任何问题,请随时提问。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值