修改日期 | 修改人 | 备注 |
2020-01-02 16:48:09[当前版本] | 闫梦洁 | 其他原因... |
2019-12-28 17:56:39 | 闫梦洁 | 格式调整 |
2019-12-27 17:47:29 | 闫梦洁 | 创建版本 |
使用 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 = ["", ""];
}
item.children = childArr;