z-tree 的reAsyncChildNodes 方法的入参值(parentNode)应该是什么?为什么一直不行?

发布于 2021-11-06 19:00:36 字数 100 浏览 820 评论 14

我打算用reAsyncChildNodes异步刷新某个节点,可是一直不行,就算可以的话,这个节点也会失去选中,再次刷新就不行了.现在比如我要刷新A节点,我要怎么做呢?希望前辈帮帮忙。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

墨洒年华 2021-11-08 16:08:48

回复
1. 问题不清楚如何给出实际答案?2.没有给出实际答案但是人家就是根据我说的问题找到了原因并且解决了问题,不知道有何不厚道?

平生欢 2021-11-08 16:08:44

3. 我从来没说 zTree 结构好,我也在考虑完全重新设计结构,因为当初只是学习 jQuery的时候就做了一个树而已,现在想全面改版只是苦于工作比较繁忙,业余时间太少无暇顾及。4. refresh 本来就是tmd 满足某些极端需求的,我在 api 中都说了不建议使用的。

月亮是我掰弯的 2021-11-08 16:08:19

1、请你学会自己查找问题,要找到关键点。一个是要逐步调试,另一个是要化繁为简,逐步取消多余的功能,看看是哪个地方影响的逻辑错误

2、你这给出来的代码,和 Demo 几乎一模一样,一点意义都没有,因为Demo并没有这个错误,出现不同的结果肯定是在有差异的地方出现的,不能只去看那些相同的地方。

3、你给的这个代码还有点儿问题 for 循环里面居然用的都是 nodes[0] 但这不应该是导致你这个错误的原因。 

如果你实在找不到问题,就把你的例子做成 html 的demo 在这里贴出来 或者 发给我看看吧。

霞映澄塘 2021-11-08 16:08:08

引用来自“zTree”的答案

引用来自“孤影飞翔”的答案

如图:现在操作是这样的选择了"第一"这个节点,点击"新增子组',新增一个子节点后,入库完毕,调用reAsyncChildNodes方法刷新"第一"这个节点,都是正常的,不过刷新之后,第一这个节点就失去了选中,再次新增节点就没办法刷新了,利用selectNode方法也不行。。。

羁拥 2021-11-08 16:08:01

如图:现在操作是这样的选择了"第一"这个节点,点击"新增子组',新增一个子节点后,入库完毕,调用reAsyncChildNodes方法刷新"第一"这个节点,都是正常的,不过刷新之后,第一这个节点就失去了选中,再次新增节点就没办法刷新了,利用selectNode方法也不行。。。

自此以后,行同陌路 2021-11-08 16:07:57

如图:现在操作是这样的选择了"第一"这个节点,点击"新增子组',新增一个子节点后,入库完毕,调用reAsyncChildNodes方法刷新"第一"这个节点,都是正常的,不过刷新之后,第一这个节点就失去了选中,再次新增节点就没办法刷新了,利用selectNode方法也不行。。。不知道我是不是思路有错误、、

瑾夏年华 2021-11-08 16:01:44

1、如果你只想异步刷新某一个节点的信息,那么 zTree 没有这种功能,你只能是自己利用 ajax 获取该节点的最新信息,然后直接修改这个节点的各个属性,如果牵扯到name这种用于显示的属性,那么请用 updateNode 方法进行更新

2、如果你是刷新某个父节点的子节点,这时候使用 reAsyncChildNodes 方法是有效地,可以重新加载其全部子节点。

3、【重点】请务必搞清楚异步加载的原理。如果你想针对异步加载结束后做操作,绝对不能直接在 reAsyncChildNodes 语句执行后立刻执行你的代码,因为这时候异步加载可能刚刚开始,根本尚未执行完毕。 对于异步加载一定要利用 onAsyncSuccess 和 onAsyncError 这两个回调函数来捕获异步加载完毕的事件。所以要在确认异步加载完毕之后再进行选中操作。

4、【重点】zTree 是以节点数据为核心,所以重新异步加载子节点的时候请务必记住,刷新后的子节点数据对象已经和原先的数据对象不同了。 如果你在刷新之前得到的子节点数据对象,绝对不能在 重新异步加载之后 直接拿来操作,因为该数据在 zTree 内已经不存在了。这种情况你需要利用从父节点获取子节点的方法,或者利用 getNodesByParam等方法查找你需要找到的节点数据,然后才能使用 selectNode 方法进行处理。

不知道说的是否能明白,也有可能没能完全理解你的意图,如果有问题就继续沟通吧。

苍暮颜 2021-11-08 15:40:24

好吧。。我再顶下应该没事吧。。。

倾城泪 2021-11-08 14:16:22

异步加载数据现在是可以的,现在在做节点的增,删等操作的时候,也需要异步的刷新,demo中有用到reAsyncChildNodes 具体使用的时候一直不行。。。

等你爱我 2021-11-08 09:42:30

异步刷新加点,我是这样做的,在callback事件的onclick事件写了一个方法,点击节点的时候就传当前节点的ID到servLet,servLet用当前的ID做父节点查询数据库,返回就可以了。

梦中楼上月下 2021-11-08 07:56:52

自己顶下。。。

狠疯拽 2021-11-07 14:02:31

前两天都弄其他的,今天才去认真看下程序,原先这个是另外一个同事加的,认真看了下,原来在他在onAsyncSuccess 中调用了selectNode方法(不知道为什么要调用),导致数据出错,就出现了我提出的问题,今天终于解决

归属感 2021-11-07 12:40:26

引用来自“孤影飞翔”的答案

如图:现在操作是这样的选择了"第一"这个节点,点击"新增子组',新增一个子节点后,入库完毕,调用reAsyncChildNodes方法刷新"第一"这个节点,都是正常的,不过刷新之后,第一这个节点就失去了选中,再次新增节点就没办法刷新了,利用selectNode方法也不行。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文