59 lines
1.2 KiB
Markdown
59 lines
1.2 KiB
Markdown
|
|
||
|
<cn>
|
||
|
#### 动态加载选项
|
||
|
使用 `loadData` 实现动态加载选项。
|
||
|
> 注意:`loadData` 与 `showSearch` 无法一起使用。
|
||
|
</cn>
|
||
|
|
||
|
<us>
|
||
|
#### Load Options Lazily
|
||
|
Load options lazily with `loadData`.
|
||
|
> Note: `loadData` cannot work with `showSearch`.
|
||
|
</us>
|
||
|
|
||
|
```html
|
||
|
<template>
|
||
|
<a-cascader :options="options" @change="onChange" :loadData="loadData" placeholder="Please select" changeOnSelect/>
|
||
|
</template>
|
||
|
<script>
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
options: [{
|
||
|
value: 'zhejiang',
|
||
|
label: 'Zhejiang',
|
||
|
isLeaf: false,
|
||
|
}, {
|
||
|
value: 'jiangsu',
|
||
|
label: 'Jiangsu',
|
||
|
isLeaf: false,
|
||
|
}]
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
onChange(value) {
|
||
|
console.log(value);
|
||
|
},
|
||
|
loadData(selectedOptions) {
|
||
|
const targetOption = selectedOptions[selectedOptions.length - 1];
|
||
|
targetOption.loading = true;
|
||
|
|
||
|
// load options lazily
|
||
|
setTimeout(() => {
|
||
|
targetOption.loading = false;
|
||
|
targetOption.children = [{
|
||
|
label: `${targetOption.label} Dynamic 1`,
|
||
|
value: 'dynamic1',
|
||
|
}, {
|
||
|
label: `${targetOption.label} Dynamic 2`,
|
||
|
value: 'dynamic2',
|
||
|
}];
|
||
|
this.options = [...this.options]
|
||
|
}, 1000);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
```
|
||
|
|