layer弹框删除ztree节点非阻塞问题解决

简介: layer弹框删除ztree节点非阻塞问题解决

在ztree里面,删除一个节点的时候,会弹出一个弹框询问,是否删除,本来用的是网页自带的confirm弹框,根据公司的业务需求,要用到layer弹框删除,这个时候,就出现了一个问题。


问题:触发删除事件之后,弹出layer弹框,但是没有点击确定或者取消,就已经将选中的节点删除了。


原因:layer.confirm不能阻塞事件(confirm是网页自带的,有阻塞事件),不管有没有确定按钮,就已经执行ztree里面的删除节点事件function zTreeOnRemove(event, treeId, treeNode)


造成这个问题。


解决办法:弃用ztree自带的节点删除

原来的方法:

// 删除之前事件
function zTreeBeforeRemove(treeId, treeNode) {
var flag = true;
$.ajax({
url : basePath + "/organ/isDel/" + treeNode.id,
type : "get",
async : false,
success : function(data) {
if(data == 0){
/alert(i18n_unDel);/
layer.msg('i18n_unDel',{icon:5,time:1000});
flag = false;
}else{
/flag = confirm(i18n_conf);/
flag =layer.confirm("确认要删除吗,删除后不能恢复", { title: "删除确认" }, function (index) {
layer.close(index);
});
}
}
});
return flag;
}
// 删除节点事件
function zTreeOnRemove(event, treeId, treeNode) {
$.ajax({
url : basePath + "/organ/" + treeNode.id,
type : "DELETE",
success : function(data) {
initTree();
}
});
}

修改之后:

// 删除之前事件
function zTreeBeforeRemove(treeId, treeNode) {
    layer.confirm("确认要删除吗,删除后不能恢复", { title: "删除确认" }, function (index) {
        new Promise(function(resolve,reject){
            $.ajax({
                url : basePath + "/organ/isDel/" + treeNode.id,
                type : "get",
                async : false,
                success : function(data) {
                    if(data == 0){
                    layer.msg('i18n_unDel',{icon:5,time:1000});
                    }else{
                        return resolve(null)
                    }           
                }
            });
        }).then(function(){
            $.ajax({
                url : basePath + "/organ/" + treeNode.id,
                type : "DELETE",
                success : function(data) {
                        initTree();
                        return Promise.resolve(null)
                }
            });
        }).then(function(){
            zTreeObj.removeNode(treeNode,false)
            layer.close(index);
        }).catch(function(error){
            if(error){
                layer.msg(error,{icon:5,time:1000});
            }
        })
    });
    return false;
}
// 删除节点事件
function zTreeOnRemove(event, treeId, treeNode) {
}
相关文章
|
JavaScript
js节点、属性操作,计时器,location、history对象,常见键盘事件
js节点、属性操作,计时器,location、history对象,常见键盘事件
|
6月前
使用element clickoutside自定义指令事件,点击元素外部触发(element-ui/src/utils/clickoutside)
使用element clickoutside自定义指令事件,点击元素外部触发(element-ui/src/utils/clickoutside)
|
JavaScript
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
1595 0
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
|
JSON 前端开发 数据格式
获取ztree树的选中子菜单信息并且提交给后端
获取ztree树的选中子菜单信息并且提交给后端
57 0
获取ztree树的选中子菜单信息并且提交给后端
|
JSON JavaScript 数据格式
ztree取消节点操作
ztree取消节点操作
38 0
|
JavaScript 前端开发
JQuery 获取选中多选框的value,合并成数组传给后台
JQuery 获取选中多选框的value,合并成数组传给后台
40 0
|
JavaScript
jQuery取消checkbox选中状态
jQuery取消checkbox选中状态
53 0
ztree隐藏指定节点后面的(重命名和删除)图标
ztree隐藏指定节点后面的(重命名和删除)图标
118 0