用户信息展示页面为A页面,编辑页面为B页面。A是B的父页面
首先在A页面添加按钮,点击触发函数,函数初始化layer弹窗
‘编辑’按钮:
<button type="button" class="btn btn-primary btn-xs" id="edit{{item.id}}" onclick="editSingle('{{$index}}')">修改</button>
执行函数:
var userContentfunction editSingle(index){ userContent = vm.content[index] layer.open({ type: 2, title: '编辑', area : ['800px' , '520px'], scrollbar: false, content: 'bUser/editSingle' }); }
B页面初始化时从A页面取值,用parent.xxx
var iframe = parent.layer.getFrameIndex(window.name); var vm = new Vue({ el:'#editUser', data:{ contents:parent.userContent, titles:['手机','密码','用户名','性别','邮箱','地区','个性签名','头像'] } });
使用Vue动态生成html语句
<form class="form-horizontal" id="editUser" action="<%=basePath%>/BSMSys/bUser/save" method="post"> <div class="form-group" v-for="(key,value) in contents" > <div v-if="$index==0"> <div hidden> <input v-else type="text" class="form-control" id="{{key}}" name="{{key}}" placeholder="{{value}}" value="{{value}}"> </div> </div> <div v-if="$index!=0"> <label for="{{key}}" class="col-xs-2 control-label">{{titles[$index-1]}}</label> <div class="col-xs-9" > <div v-if="$index==4 || value=='MAN'" class="fixradio"> <input type="radio" name="{{key}}" id="{{key}}" value="MAN"/> 男 <input type="radio" name="{{key}}" id="{{key}}" value="WOMEN"/> 女 </div> <input v-else type="text" class="form-control" id="{{key}}" name="{{key}}" placeholder="{{value}}" value="{{value}}"> </div> </div> </div> <div class="form-group"> <div class="col-xs-offset-5 col-xs-1"> <button class="btn btn-primary" id="save">保存</button> </div> <div class="col-xs-1"> <button class="btn btn-default" id="restore">还原</button> </div> </div></form>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
效果如下:
由于其中’性别’是radio单选框,所以需要判断
if(vm.contents.sex!=''){ if(vm.contents.sex=='MAN') $("#sex:eq(0)").click(); else $("#sex:eq(1)").click(); }
还原按钮,即刷新页面:
$("#restore").click(function(){ window.location.reload(); })
保存按钮:
$("#save").click(function(){ $("#editUser").submit(); parent.location.reload(); })
在后台将form数据保存进数据库即可
后续优化:
将B页面form表单的submit提交改为ajax提交,
function save(){ $.ajax({ type:"post", url:"<%=basePath%>/BSMSys/bUser/save", data: $("#editUser").serialize(), complete: function() { parent.layer.close(iframe); } }); }
$('#save').on('click', function(){ save(); });
将A页面的layer弹窗添加end函数回调,使弹窗关闭后刷新页面:
function jumpToPage(page){ $.get("<%=basePath%>/BSMSys/bUser/showUser?pageNum="+page, function(data) { vm.content=data.content; currPage = data.number+1; $('#pager').bootstrapPaginator("show",currPage ); }); $("#pageInputGroup").attr("class","input-group"); $("#pageInput").attr("placeholder",function(index,value){ $(this).val(""); return "第"+options.currentPage+"页,共"+options.totalPages+"页"; });}
var userContentfunction editSingle(index){ userContent = vm.content[index] layer.open({ type: 2, title: '编辑', area : ['800px' , '520px'], scrollbar: false, content: '<%=basePath%>/BSMSys/bUser/editSingle', end:function(){ jumpToPage(options.currentPage); } }); }