tangjinzhou
3 years ago
3 changed files with 138 additions and 0 deletions
@ -0,0 +1,106 @@ |
|||||||
|
<docs> |
||||||
|
--- |
||||||
|
order: 0 |
||||||
|
title: |
||||||
|
zh-CN: 手风琴模式 |
||||||
|
en-US: Accordion |
||||||
|
--- |
||||||
|
|
||||||
|
## zh-CN |
||||||
|
|
||||||
|
同一级的节点,每次只能展开一个 |
||||||
|
|
||||||
|
## en-US |
||||||
|
|
||||||
|
Nodes of the same level can only be expanded one |
||||||
|
|
||||||
|
</docs> |
||||||
|
<template> |
||||||
|
<a-tree |
||||||
|
v-model:selectedKeys="selectedKeys" |
||||||
|
:expanded-keys="expandedKeys" |
||||||
|
:tree-data="treeData" |
||||||
|
@expand="handleExpand" |
||||||
|
> |
||||||
|
<template #title="{ title, key }"> |
||||||
|
<span v-if="key === '0-0-1-0'" style="color: #1890ff">{{ title }}</span> |
||||||
|
<template v-else>{{ title }}</template> |
||||||
|
</template> |
||||||
|
</a-tree> |
||||||
|
</template> |
||||||
|
<script lang="ts"> |
||||||
|
import type { TreeProps } from 'ant-design-vue'; |
||||||
|
import _ from 'lodash'; |
||||||
|
import { defineComponent, ref, watch } from 'vue'; |
||||||
|
|
||||||
|
const treeData: TreeProps['treeData'] = [ |
||||||
|
{ |
||||||
|
title: 'parent 1', |
||||||
|
key: '0-0', |
||||||
|
children: [ |
||||||
|
{ |
||||||
|
title: 'parent 1-0', |
||||||
|
key: '0-0-0', |
||||||
|
children: [ |
||||||
|
{ title: 'leaf', key: '0-0-0-0' }, |
||||||
|
{ title: 'leaf', key: '0-0-0-1' }, |
||||||
|
], |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: 'parent 1-1', |
||||||
|
key: '0-0-1', |
||||||
|
children: [{ key: '0-0-1-0', title: 'sss' }], |
||||||
|
}, |
||||||
|
], |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: 'parent 2', |
||||||
|
key: '1-0', |
||||||
|
children: [ |
||||||
|
{ |
||||||
|
title: 'parent 2-0', |
||||||
|
key: '1-0-0', |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: 'parent 2-1', |
||||||
|
key: '2-0-1', |
||||||
|
}, |
||||||
|
], |
||||||
|
}, |
||||||
|
]; |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
setup() { |
||||||
|
const expandedKeys = ref<string[]>([]); |
||||||
|
const selectedKeys = ref<string[]>(['0-0-0', '0-0-1']); |
||||||
|
const checkedKeys = ref<string[]>(['0-0-0', '0-0-1']); |
||||||
|
watch(expandedKeys, () => { |
||||||
|
console.log('expandedKeys', expandedKeys); |
||||||
|
}); |
||||||
|
watch(selectedKeys, () => { |
||||||
|
console.log('selectedKeys', selectedKeys); |
||||||
|
}); |
||||||
|
watch(checkedKeys, () => { |
||||||
|
console.log('checkedKeys', checkedKeys); |
||||||
|
}); |
||||||
|
const handleExpand = (keys: string[], { expanded, node }) => { |
||||||
|
// node.parent add from 3.0.0-alpha.10 |
||||||
|
const tempKeys = ((node.parent ? node.parent.children : treeData) || []).map( |
||||||
|
({ key }) => key, |
||||||
|
); |
||||||
|
if (expanded) { |
||||||
|
expandedKeys.value = _.difference(keys, tempKeys).concat(node.key); |
||||||
|
} else { |
||||||
|
expandedKeys.value = keys; |
||||||
|
} |
||||||
|
}; |
||||||
|
return { |
||||||
|
treeData, |
||||||
|
expandedKeys, |
||||||
|
selectedKeys, |
||||||
|
checkedKeys, |
||||||
|
handleExpand, |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
Loading…
Reference in new issue