Dragon
主机之家测评主机之家测评  2019-08-29 02:05 主机之家测评 隐藏边栏 |   抢沙发  96 
文章评分 0 次,平均分 0.0

layer 是一款非常优秀的弹窗控件,最近在使用 layer 做开发的时候遇到一个需求:layer 子窗体关闭后向父窗体传值,然后父窗体根据传值决定下一步操作。

如果只是单纯的子窗体关闭后,父窗体进行相应操作那么我们可以使用父窗体的 end 方法:

示例 1,子窗体关闭后父窗体刷新:

子窗体代码:

window.parent.layer.closeAll();

父窗体代码:

$("#new").on('click',function(){
var url = "{:url('index/file/create')}";
layer.open({
type: 2,
title: '新增案卷',
shadeClose: true,
shade: 0.5,
area: ['380px', '300px'],
content: [url],
end: function () {
location.reload();
}
});
})

上面代码在子窗体中调用父窗体的关闭代码,然后利用父窗体的 end 方法实现响应,达到子窗体关闭后父窗体做出响应。

但是如果我们有更高的需求,比如说根据子窗体关闭时传的值来决定父窗体是刷新还是跳转,那怎么办呢?

示例 2,子窗体关闭后向父窗体传值,然后父窗体根据传值决定下一步操作:

子窗体代码:

parent.callback(data.data);
window.parent.layer.closeAll();

父窗体代码:

//layer 子窗体控制父窗体
function callback(id){
if(id>0){
var url = "{:url('index/file/archives')}?id="+id;
location.href = url;
}else{
location.reload();
}
}

上面代码在子窗体中先调用父窗体定义的回调函数,然后在父窗体定义对应的回调函数即可。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享