Ant-design-vue系列: 树形控件 a-tree 的新增、删除、编辑节点

27 篇文章 0 订阅

以下是 Ant-design-vue 树形控件 a-tree 的新增、删除、编辑节点示例:

  • 新增节点
<template>  
  <a-tree :tree-data="treeData" @create="handleCreate"></a-tree>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      treeData: [  
        {  
          title: 'Node 1',  
          key: '0-0',  
          children: [  
            {  
              title: 'Node 1-1',  
              key: '0-0-0'  
            },  
            {  
              title: 'Node 1-2',  
              key: '0-0-1'  
            }  
          ]  
        },  
        {  
          title: 'Node 2',  
          key: '0-1'  
        }  
      ]  
    };  
  },  
  methods: {  
    handleCreate(treeNode, { add }) {  
      // 创建新节点  
      const newNode = {  
        title: 'New Node',  
        key: '0-2'  
      };  
  
      add(treeNode, newNode);  
    }  
  }  
};  
</script>

在上面的示例中,我们在 a-tree 组件中使用 @create 事件来监听节点创建事件。

在 handleCreate 方法中,我们通过 add 函数来将新节点插入到当前节点的子节点列表中。

  • 删除节点
<template>  
  <a-tree :tree-data="treeData" @remove="handleRemove"></a-tree>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      treeData: [  
        {  
          title: 'Node 1',  
          key: '0-0',  
          children: [  
            {  
              title: 'Node 1-1',  
              key: '0-0-0'  
            },  
            {  
              title: 'Node 1-2',  
              key: '0-0-1'  
            }  
          ]  
        },  
        {  
          title: 'Node 2',  
          key: '0-1'  
        }  
      ]  
    };  
  },  
  methods: {  
    handleRemove(treeNode) {  
      // 删除节点  
      const parent = treeNode.parent;  
      parent.children.splice(parent.children.indexOf(treeNode), 1);  
    }  
  }  
};  
</script>

在上面的示例中,我们在 a-tree 组件中使用 @remove 事件来监听节点删除事件。

在 handleRemove 方法中,我们通过 splice 函数将当前节点的父节点中的子节点列表删除当前节点。

  • 编辑节点
<template>  
  <a-tree :tree-data="treeData" @edit="handleEdit"></a-tree>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      treeData: [  
        {  
          title: 'Node 1',  
          key: '0-0',  
          children: [  
            {  
              title: 'Node 1-1',  
              key: '0-0-0'  
            },  
            {  
              title: 'Node 1-2',  
              key: '0-0-1'  
            }  
          ]  
        },  
        {  
          title: 'Node 2',  
          key: '0-1'  
        }  
      ]  
    };  
  },  
  methods: {  
    handleEdit(treeNode) {  
      // 编辑节点  
      console.log(treeNode); // 打印编辑前的节点信息  
      // 进行编辑操作,例如更新节点的 title 属性值  
      treeNode.title = 'New Title';   
      console.log(treeNode); // 打印编辑后的节点信息  
    }  
  }  
};  
</script>  

id="code">在上面的示例中,我们在 a-tree 组件中使用 `@edit` 事件来监听节点编辑事件。在 `handleEdit` 方法中,我们通过打印编辑前和编辑后的节点信息来展示编辑操作。

在实际应用中,我们可以根据具体需求来进行编辑操作,例如更新节点的属性值。
 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Vue3中,Ant-Design-VueTree组件的用法与Vue2有些不同。以下是示例代码: ```html <template> <a-tree :tree-data="treeData" :draggable="true" :block-node="true" :show-line="true" :default-expanded-keys="defaultExpandedKeys" v-model:selected-keys="selectedKeys" @select="onSelect"> <template #title="{ key, title }"> <span> {{ title }} <a @click.stop="addNode(key)">Add</a> <a @click.stop="removeNode(key)">Delete</a> </span> </template> </a-tree> </template> <script> import { ref } from 'vue' export default { setup() { const treeData = ref([ { title: 'Parent 1', key: '0-0', children: [ { title: 'Child 1', key: '0-0-0' }, { title: 'Child 2', key: '0-0-1' } ] } ]) const defaultExpandedKeys = ref(['0-0']) const selectedKeys = ref([]) const addNode = (parentKey) => { const newNode = { title: 'New Node', key: `${parentKey}-${treeData.value.length}` } const parentNode = treeData.value.find(node => node.key === parentKey) if (!parentNode.children) { parentNode.children = [] } parentNode.children.push(newNode) treeData.value = [...treeData.value] } const removeNode = (key) => { const parentKey = key.split('-').slice(0, -1).join('-') const parentNode = treeData.value.find(node => node.key === parentKey) parentNode.children = parentNode.children.filter(node => node.key !== key) treeData.value = [...treeData.value] } const onSelect = (selectedKeys) => { console.log(selectedKeys) } return { treeData, defaultExpandedKeys, selectedKeys, addNode, removeNode, onSelect } } } </script> ``` 这个示例与Vue2中的示例类似,只是我们使用了Vue3的Composition API来编写代码。我们使用了ref函数来创建响应式变量。在addNode和removeNode方法中,我们使用了Vue3的响应式API来更新数据。当我们改变treeData的值时,我们必须通过解构赋值来创建一个新的数组来触发更新。注意,在Vue3中,我们使用v-model来绑定selected-keys。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪潮行舟

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值