203  
查询码:00000659
Cascader 异步加载子选项
作者: 闫梦洁 于 2019年12月27日 发布在分类 / FM组 / FM其他 下,并于 2020年01月02日 编辑

使用 load-data 属性可以异步加载子选项,需要给数据增加 loading 来标识当前是否在加载中。

load-data 的第二个参数为回调,如果执行,则会自动展开当前项的子列表

代码示例:


<template>
    <Cascader :data="data4" :load-data="loadData"></Cascader>
</template>
<script>
    export default {
        data () {
            return {
                data4: [
                    {
                        value: 'beijing',
                        label: '北京',
                        children: [],
                        loading: false
                    },
                    {
                        value: 'hangzhou',
                        label: '杭州',
                        children: [],
                        loading:false
                    }
                ]
            }
        },
        methods: {
            loadData (item, callback) {
                item.loading = true;
                setTimeout(() => {
                    if (item.value === 'beijing') {
                        item.children = [
                            {
                                value: 'talkingdata',
                                label: 'TalkingData'
                            },
                            {
                                value: 'baidu',
                                label: '百度'
                            },
                            {
                                value: 'sina',
                                label: '新浪'
                            }
                        ];
                    } else if (item.value === 'hangzhou') {
                        item.children = [
                            {
                                value: 'ali',
                                label: '阿里巴巴'
                            },
                            {
                                value: '163',
                                label: '网易'
                            }
                        ];
                    }
                    item.loading = false;
                    callback();
                }, 1000);
            }
        }
    }
</script>

实际过程中,我们会发现,当当前选中项子选项无内容时,展开子选项保持为上次内容,尝试了清楚子选项数组内容也没有起到作用后,然后采取了一种取巧的方法解决这个问题,在加载子选项内容的方法中,判断当前子选项数据是否没有数据,没有数据时,手动添加一条空内容,如下:

if (childArr.length <= 0) {
                                        childArr = [{ "value": "", "label": "" }];
                                    }






 推荐知识

 历史版本

修改日期 修改人 备注
2020-01-02 16:48:09[当前版本] 闫梦洁 其他原因...
2019-12-28 17:56:39 闫梦洁 格式调整
2019-12-27 17:47:29 闫梦洁 创建版本

知识分享平台 -V 4.8.7 -wcp