Email 刚回复完毕,这里全当备份了。
关于你的问题解答如下:
1、 beforeDrop 和 onDrop 回调中 都有 treeNodes 这个参数, 这就是当前被拖拽的节点**。 因为 zTree v3.x 版本中允许对于同级节点的多节点同时拖拽,所以 即使只拖拽一个节点,在 drop 的回调中也总是要返回一个 Array,只不过拖拽一个节点时这个 Array 的长度为1
2、 对于 treeNodes 这个参数的规则 在 beforeDrag 和 onDrag 中同样有效。
3、你可以利用 onDrop 的回调,触发自己的 ajax 请求后台进行更新数据库。 如果需要全面考虑到数据库的数据同步、异常;前后台要保持一致,那么可能要多费费心思。 例如:
简要方案1: 延续当前方法,如果ajax 请求后得知更新失败,可以重新发起 ajax 请求,或者 根据之前保存的数据,利用 moveNode 方法将移动的节点还原。
简要方案2: 利用 beforeDrop 回调,触发自己的ajax 请求,同时 return false; 在 ajax 请求结束后,判断如果数据库更新成功,那么利用 moveNode 方法进行拖拽。
具体方案还有很多种, 例如:利用 reAsyncChildNodes 刷新某些父节点达到前后台保持一致的方法 等等。 关键还是要看你的实际需求而定。
如果有问题还请继续沟通吧。