You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ant-design-vue/antdv-demo/docs/tree-select/demo/async.md

70 lines
1.4 KiB

<cn>
#### 异步加载
异步加载树节点。
</cn>
<us>
#### Asynchronous loading
Asynchronous loading tree node.
</us>
```vue
<template>
<a-tree-select
v-model="value"
tree-data-simple-mode
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
:tree-data="treeData"
placeholder="Please select"
:load-data="onLoadData"
/>
</template>
<script>
export default {
data() {
return {
value: undefined,
treeData: [
{ id: 1, pId: 0, value: '1', title: 'Expand to load' },
{ id: 2, pId: 0, value: '2', title: 'Expand to load' },
{ id: 3, pId: 0, value: '3', title: 'Tree Node', isLeaf: true },
],
};
},
watch: {
value(value) {
console.log(value);
},
},
methods: {
genTreeNode(parentId, isLeaf = false) {
const random = Math.random()
.toString(36)
.substring(2, 6);
return {
id: random,
pId: parentId,
value: random,
title: isLeaf ? 'Tree Node' : 'Expand to load',
isLeaf,
};
},
onLoadData(treeNode) {
return new Promise(resolve => {
const { id } = treeNode.dataRef;
setTimeout(() => {
this.treeData = this.treeData.concat([
this.genTreeNode(id, false),
this.genTreeNode(id, true),
]);
resolve();
}, 300);
});
},
},
};
</script>
```