子窗口的数据从父窗口的table中获取
子窗口的赋值和提交都在父窗口中执行
父窗口页面
<table id="LAY-user-manage" lay-filter="LAY-user-manage" class="layui-hide"></table>
<!-- 行工具栏-->
<script type="text/html" id="table-useradmin-webuser">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</script>
<script>
layui.config({
base: '/layuiAdmin/src/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'useradmin', 'table'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table
,laypage = layui.laypage;
//table列表渲染
table.render({
elem:'#LAY-user-manage',
height: 'full-200',
url:'/admin/cases/list',
title:'解决方案表',
page: true,
limit:5,
limits: [3,5,10],
cols:[[
{type:'checkbox',fixed:'left'}
,{field:'id', width:80, sort: true,title:'ID'}
,{field:'title', width:200, title: '标题'}
,{field:'pic',width:250,title:'封面图片',templet:'#imgtmp'}
,{field:'content', minWidth:400, title: '内容' }
,{field:'sort', width:100, title: '分类' }
,{fixed: 'right', width: 165, align:'center', toolbar: '#table-useradmin-webuser'}//对应行工具栏id
]]
});
//模板中自带的,不懂什么意思,猜测是获取按钮的点击事件
$('.layui-btn.layuiadmin-btn-useradmin').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
//监听行工具栏
table.on('tool(LAY-user-manage)',function (obj) {
//获取行数据
var data = obj.data;
console.log(data);
//点击删除
if (obj.event === 'del'){
//删除方法
} else if (obj.event === 'edit'){
//点击编辑
layer.open({
//打开子窗口
type: 2
,title: '编辑内容'
,content: '/admin/cases/edit'
,maxmin: true
,area: ['800px', '450px']
,btn: ['确定', '取消']
,success:function (layero, index) {
//打开子窗口后通过success赋值,两个变量基本是固定写法
var body = layer.getChildFrame('body', index);
var iframeWin = window[layero.find('iframe')[0]['name']];
console.log(data.content);
//给子窗口中的元素赋值
body.find('input[name="id"]').val(data.id);
body.find('input[name="title"]').val(data.title);
body.find('textarea[name="content"]').val(data.content);
body.find('input[name="pic"]').val(data.pic);
}
,yes: function(index, layero){
//模板自带,固定写法,要注意子窗口中的提交按钮id对应submitID
var iframeWindow = window['layui-layer-iframe'+ index]//得到iframe页的窗口对象,执行iframe页的方法:
,submitID = 'LAY-user-front-submit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field; //获取提交的字段
$.ajax({
url:'/admin/cases/editSave',
data:field,
dataType:'json',
method:'post',
success:function (res) {
layer.msg(res.msg);
table.reload('LAY-user-manage');
}
});
layer.close(index); //关闭弹层
});
submit.trigger('click');
}
});
}
})
});
</script>
子窗口页面
<div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin" style="padding: 20px 0 0 0;">
<div class="layui-form-item layui-hide">
<label class="layui-form-label">id</label>
<div class="layui-input-inline">
<input type="text" name="id" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-inline">
<input type="text" name="title" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">封面图片</label>
<div class="layui-input-inline">
<input type="text" name="pic" lay-verify="required" placeholder="请上传图片" autocomplete="off" class="layui-input" >
</div>
<button style="float: left;" type="button" class="layui-btn" id="layuiadmin-upload-useradmin">上传图片</button>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" name="content" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-user-front-submit" id="LAY-user-front-submit" value="确认">
</div>
</div>
<script>
layui.config({
base: '/layuiAdmin/src/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'upload'], function(){
var $ = layui.$
,form = layui.form
,upload = layui.upload ;
//图片上传的配置
var uploadInst = upload.render({
elem: '#layuiadmin-upload-useradmin'
,url: '/admin/upload' //改成您自己的上传接口
,accept: 'images'
,exts: 'jpg|png|gif|bmp|jpeg'
,method: 'post'
/*,before: function(obj){
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$('#demo1').attr('src', result); //图片链接(base64)
});
}*/
,done: function(res){
//如果上传失败
if(res.code > 0){
return layer.msg('上传失败');
}
//上传成功
// $("input[name='pic']").val(res.data.src);
$(this.item).prev("div").children("input").val(res.data);
}
/*,error: function(){
//演示失败状态,并实现重传
//#demoText对应一个提示元素,演示文档中使用的是:
//<div class="layui-upload-list">
// <img class="layui-upload-img" id="demo1">
// <p id="demoText"></p>
// </div>
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
} */
});
})
</script>
Controller照常写即可