layer弹出层,当设置type为2时,引入其他页面中内容。
最近项目里碰到的问题,在父页面用layer.open打开子页面后,从子页面如何调用父页面的方法,从子页面如何关闭父页面中layer弹出层。
父页面打开弹出层
type设置为2
content中为打开的其他页面的地址
//点击按钮,layer打开其他页面的弹出层
$('#add').click(function(){
var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
allNode = zTree.getNodes(), //ztree下所有节点
nodes = zTree.getSelectedNodes(), //获取ztree下得选中节点
treeNode = nodes[0];
if(treeNode==undefined){
layer.alert('还没选择部门');
return false;
}else{
layer.open({
type: 2,
title: '编辑',
shadeClose: true,
shade: 0.8,
area: ['500px','540px'],
content: 'www.baidu.com'+treeNode.id
});
}
});
在打开的子页面中,提交表单,并根据提交状态判断是否关闭该子页面,当关闭了子页面弹出层,刷新父页面的一个页面。
开始我是在layer.alert的回调函数中直接layer.closeAll(),并不好使。
最终实现:
1、通过获取父页面下得layer的层级,并在父页面下关闭该层级的layer
2、通过window.parent.fn 调用父页面中自定义的函数,刷新父页面中的列表。
$("input[type='button']").click(function(){
$.ajax({
type:'post',
url:'',
data:$("#user").serialize(),
dataType:'json',
success:function(data){
console.log(data);
if(data.flag==0){
layer.alert(data.msg,function(){
var index=parent.layer.getFrameIndex(window.name); //获取父页面中layer的层级
parent.layer.close(index); //当alert关闭后,关闭父页面中的layer弹出层
return true;
})
window.parent.refreshFn(); //调用父页面自定义的方法刷新父页面
}else{
layer.alert(data.msg)
}
}
});
});