ant design vue 使用树形控件(tree)点击节点expand判断的方法

当你想使用这个组件的时候,但是你点击一级树的时候调用一个接口,点击二级树的时候在调用另一个接口,那你就需要在点击一级节点的时候不用调用二级节点。那需要怎么做的,说一下我的思路,如果大家有别的更简单的方法,欢迎评论留言呐。
因为人家组件自带的方法expand有自带的参数,有一个node,node是一个对象,对象里面有一个pos的字符串,我就是判断的那个,用正则表达式匹配如果是0-0~0-9999的时候调用一级节点,如果是0-0-0的时候调用二级。

let reg = /^0-[0-99999]+$/; // 匹配的是0-0~0-9999
let isTrue = reg.test(node.pos); // 返回的是true或者false
onExpand(expandedKeys,{expanded: bool, node}) {
	// 判断isTrue
	expandedKeys.forEach((keyItem,keyIndex) => {
		if (isTrue) {
		// 这儿的判断是因为我点击的时候回重复push到里面title和key
			if (keyItem === node.eventKey) {
				// 写自己的逻辑代码 调用一级接口(一级节点)
				// push需要的对象 判断node.eventKey和节点key的值是否相等,相等的话再把数据添加到节点的children
			}
			} else {
			// 写自己的逻辑代码 调用二级接口(二级节点)
			}
		}
	};

当你想自己添加一个全选按钮节点的时候

 this.xmArr = [{
    checkable: true,
    title: '全选',
    children:[]
  }]
  res.result.forEach((xmItem,xmIndex) => {//6
  	// 因为这个全选就一个,你需要的是底下的children里面的数据所以[0]就可以xmArr[0].children
  this.xmArr[0].children.push({
    title: xmItem.jcdmc,
    key: xmItem.id,
  })
})
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Ant-Design-VueTree组件提供了add方法来新增节点和remove方法来删除节点。以下是示例代码: ```html <template> <a-tree :tree-data="treeData" :draggable="true" :block-node="true" :show-line="true" :default-expanded-keys="defaultExpandedKeys" @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> export default { data() { return { treeData: [ { title: 'Parent 1', key: '0-0', children: [ { title: 'Child 1', key: '0-0-0' }, { title: 'Child 2', key: '0-0-1' } ] } ], defaultExpandedKeys: ['0-0'] } }, methods: { addNode(parentKey) { const newNode = { title: 'New Node', key: `${parentKey}-${this.treeData.length}` } this.$set(this.treeData.find(node => node.key === parentKey), 'children', [...this.treeData.find(node => node.key === parentKey).children, newNode]) }, removeNode(key) { const parentKey = key.split('-').slice(0, -1).join('-') this.$set(this.treeData.find(node => node.key === parentKey), 'children', this.treeData.find(node => node.key === parentKey).children.filter(node => node.key !== key)) }, onSelect(selectedKeys) { console.log(selectedKeys) } } } </script> ``` 在这个示例中,我们使用Tree组件自带的title slot来添加按钮。点击Add按钮会调用addNode方法,该方法会在选定节点下添加一个新节点点击Delete按钮会调用removeNode方法,该方法会删除选定节点。这两个方法使用Vue的$set方法来更新数据。同时,我们也监听了Tree组件的select事件来打印出所选中的节点
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

好苦呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值