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();
}
}
上面代码在子窗体中先调用父窗体定义的回调函数,然后在父窗体定义对应的回调函数即可。