tiny-vue/examples/sites/demos/pc/app/tree/node-op-composition-api.vue

76 lines
1.9 KiB
Vue

<template>
<div>
<div>
<tiny-button @click="insertBefore">添加前节点</tiny-button>
<tiny-button @click="insertAfter">添加后节点</tiny-button>
<tiny-button @click="append">添加子节点</tiny-button>
<tiny-button @click="updateKeyChildren">更新子节点</tiny-button>
<tiny-button @click="remove">删除当前节点</tiny-button>
</div>
<tiny-tree
ref="treeRef"
:data="data"
node-key="id"
default-expand-all
:current-node-key="currentNodeKey"
></tiny-tree>
</div>
</template>
<script setup lang="jsx">
import { ref } from 'vue'
import { Tree as TinyTree, Button as TinyButton } from '@opentiny/vue'
let id = 1000
const treeRef = ref()
const data = ref([
{
id: '1',
label: '数据 1',
children: [{ id: '1-1', label: '数据 1-1', children: [{ id: '1-1-1', label: '数据 1-1-1' }] }]
},
{
id: '2',
label: '数据 2',
children: [
{ id: '2-1', label: '数据 2-1' },
{ id: '2-2', label: '数据 2-2' }
]
},
{
id: '3',
label: '数据 3',
children: [{ id: '3-1', label: '数据 3-1' }]
}
])
const currentNodeKey = ref('1-1')
function insertBefore() {
const currentKey = treeRef.value.getCurrentKey()
treeRef.value.insertBefore({ id, label: 'insertBefore ' + id }, currentKey)
id++
}
function insertAfter() {
const currentKey = treeRef.value.getCurrentKey()
treeRef.value.insertAfter({ id, label: 'insertAfter ' + id }, currentKey)
id++
}
function append() {
const currentKey = treeRef.value.getCurrentKey()
treeRef.value.append({ id, label: 'append ' + id }, currentKey)
id++
}
function updateKeyChildren() {
const currentKey = treeRef.value.getCurrentKey()
treeRef.value.updateKeyChildren(currentKey, [{ id, label: 'update ' + id }])
id++
}
function remove() {
const currentKey = treeRef.value.getCurrentKey()
treeRef.value.remove(currentKey)
}
</script>