zTree_v3 icon indicating copy to clipboard operation
zTree_v3 copied to clipboard

关于beforeRemove和beforeDrop异步操作的问题

Open YongChingShieh opened this issue 6 years ago • 4 comments

在ztree里面 callback中的beforeRemove方法 ,如果该方法使用异步 那么无论返回什么值 ztree都会删除该节点 而对于beforeDrop方法 无论返回什么值 都会移动节点 例如: beforeRemove: async (treeId, treeNode) => { await delete();//向后台发送需要删除数据 return false;//这里无论返回什么 ztree都会删除节点 }

YongChingShieh avatar May 22 '18 08:05 YongChingShieh

你好, zTree 完成的时间比较久远,是不支持 async await 这种异步方式,所以 虽然你在外面定义了 async ,但是程序里面可完全没使用 await 进行等待呀。

你这种使用方法,不修改源码是不可能正常的。

补充: 使用原始方法写的话,可以在 callback 内 return false;阻止zTree 默认删除操作;同时 触发 ajax 到 server 进行删除操作, 删除成功后使用 removeNode 方法单独删除即可。

zTree avatar May 25 '18 11:05 zTree

@zTree 感谢解答 关于你说的

可以在 callback 内 return false;阻止zTree 默认删除操作;同时 触发 ajax 到 server 进行删除操作

如何在 return false的同时 去触发ajax删除操作?? 如果beforeRemove后面直接 return false 那么接下来的任何代码都不会执行 犹如在代码里面 return 一样 return后面的代码将不会执行

YongChingShieh avatar May 26 '18 02:05 YongChingShieh

ajax 是异步, 你写在 代码里面当然是 先执行 ajax ,然后return false 呀

zTree avatar May 28 '18 01:05 zTree

@daGaiGuanYu 请仔细看看 removeNode 方法的 API 文档中关于 callbackFlag 参数的说明

zTree avatar Oct 15 '18 03:10 zTree