ztree吧 关注:1,833贴子:12,478
  • 7回复贴,共1

异步加载模式下,在父节点下新增子节点

只看楼主收藏回复

使用了ztree的异步加载功能,页面展开时只加载父节点,单击父节点时,会异步加载该父节点下的子节点。
看了ztree官网有关异步加载模式下的介绍,‘zTree 完善了异步加载模式下的编辑功能,对于未加载子节点的父节点,增加子节点时,会首先进行异步加载。’仔细操作了,发现添加的子节点是未写入库的,我这儿的情况是,在未展开的父节点上添加子节点时,会出现两个一样的节点,因为,我在我在添加节点前异步把数据写入库了,导致出现两个一样的节点。
试了好多办法都不能避免,请大侠指教!!!


IP属地:北京1楼2013-05-22 13:46回复
    进行 addNodes 操作时先判断 treeNode.zAsync 属性,如果父节点需要进行异步加载,那么只需要在 ajax 通知后台保存后,执行 expandNode 方法即可。 否则再执行 addNodes 方法。。。是不是 so easy 呢?


    IP属地:北京2楼2013-05-23 21:40
    收起回复
      上面的代码太乱了


      IP属地:北京4楼2013-05-24 15:14
      回复
        很明显你的 expandNode 方法写错了地方。。。你要在 ajax 的success 回调中执行哟,一定要搞清楚 异步加载的执行过程


        IP属地:北京5楼2013-05-25 08:03
        回复
          啊,可是当我在未展开的父节点上单机添加子节点的按钮时,那个treeNode.zAsync显示的是false,我无法去那个ajax返回success的时候调expandNode方法。
          在我展开父节点后,再添加子节点时,那个treeNode.zAsync属性却显示的是true


          IP属地:北京6楼2013-05-25 18:11
          回复
            zAsync 是 false 就是表明需要进行异步加载哟, API 里写的很明确。展开以后进行了异步加载,当然就变成 true 了。
            你应该是先触发 ajax 请求,这时候节点什么都没有操作,等success 触发时,根据 zAsync 决定是 expandNode 还是 addNodes 不就可以了吗


            IP属地:北京7楼2013-05-25 18:23
            回复