2021-05-28 element Plus组件Cascader 级联选择器

初次使用级联选择器遇到的一些小问题(适用新手或者跟我一样容易迷糊的银)

1.输入后输入框无选定值显示

props属性用于配置选项,label,value,children分别设置为对应显示属性,值,子节点。选择后无显示值可能是props配置写错了,检查一下单词是否拼写错误,比如label写成了lable

2.动态懒加载

官网示例:

<el-cascader :props="props"></el-cascader>

        props: {

          lazy: true,

          lazyLoad (node, resolve) {

            const { level } = node;

            setTimeout(() => {

              const nodes = Array.from({ length: level + 1 })

                .map(item => ({

                  value: ++id,

                  label: `选项${id}`,

                  leaf: level >= 2

                }));

              // 通过调用resolve将子节点数据返回,通知组件数据加载完成

              resolve(nodes);

            }, 1000);

          }

其中,只需要将const nodes = 【请求数据的异步函数,返回的是一个数组】

                .map(item=> ({

                  value: item.value属性值

                  label:  item.label属性值

                  leaf: level >= 2                }));

稍作修改即可,注意resolve中传递的数据必须是map遍历修改后的数据,切记不要传成原数据。

动态加载示例:

html:

<el-cascader

 :props="props"

v-model="value"

></el-cascader>

<template #default="{ node, data }">

    <span>{{ data.name }}</span>//要显示的属性名

  </template>

js:

props: {

          lazy: true,

        value:'id',

        label:'name',//两项必须配置,否则页面无显示

          lazyLoad:async (node, resolve) {

            const {value, level } = node;//value是点击后获取的值,再去请求下一次异步数据,根据level 判断是第几级

let nodes=[];

if(level==0){

nodes=第一次异步请求数据

}else{

nodes=第二次异步数据(value)

}

nodes=nodes. .map(item => ({

                  value: item.value

                  label: item.name

                  leaf: level >= 1//数值根据你的选择器层级来确定

                }));

              resolve(nodes);

          }

        }

      };

3.如果你的叶子节点数据仍有>符号显示还有下一级数据,在map时手动添加leaf属性布尔值,true则是叶子节点数据。

(菜鸡一枚,欢迎老司机带带我)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容