zoukankan      html  css  js  c++  java
  • layer.conifrm 非阻塞执行 ztree删除节点 问题

    layer.confirm无法阻塞js执行,导致ztree插件的beforeRemove回调函数未等待用户确定删除便已经移除界面中的节点, 因此可能会出现前后台数据不一致情况,正常逻辑理应删除后台数据然后移除界面中的ztree节点元素。

    解决方案:不使用ztree提供的默认删除功能(beforeRemove函数返回false即可),在layer.confirm中手动调用removeNode方法实现前台与后台的数据同步删除(舍弃ztree提供的自动删除功能)。代码如下:

    //beforeRemove回调函数
    function zTreeBeforeRemove(treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj("zTree");
    layer.confirm("确认删除节点 -> " + treeNode.name + " 吗?", {btn: ['确定', '取消']},
    function (index) {//确定
    $.ajax({
    url: url,
    data: {"id": treeNode.id},
    type: "POST",
    async: false,
    success: function (data) {
    if (!data) {
    layer.alert("该接口已经被申请!");
    } else {
    //手动移除节点
    zTree.removeNode(treeNode);
    layer.alert("删除成功!");
    }
    },
    error: function () {
    layer.alert("删除失败!");
    }
    });
    },
    function (index) {//取消
    layer.close(index);
    });
    //注意:返回false便不会触发onRemove事件
    return false;
    }

    参考文献:https://blog.csdn.net/yqwayward/article/details/78312424
    ---------------------
    作者:LYM0721
    来源:CSDN
    原文:https://blog.csdn.net/LYM0721/article/details/82183580?utm_source=copy
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    函数防抖与函数节流 封装好的debounce和throttle函数
    机顶盒
    getchar() putchar()
    【整】char、varchar、nchar、nvarchar的区别
    主机名
    主机
    java中的匿名内部类总结
    智能路由器又多一个玩家——乐视TV
    乐视开始折腾路由器,小米与极路由还会好过吗?
    带你认识什么是路由器
  • 原文地址:https://www.cnblogs.com/lggggg/p/9796215.html
Copyright © 2011-2022 走看看