在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法


Posted in Javascript onSeptember 10, 2019

最近,在项目中使用到了layer。layer的弹层组件可以说是非常好用,layer 至今仍作为 layui 的代表作。在项目中,需要实现一个在表格里面点击操作,然后弹出layer层,将父层表格的行值传给子页面,子页面拿到值后,进行业务处理,从而实现真正的父子页面交互。

其实,官方文档都说的很清楚了。

layui官方文档:http://layer.layui.com/

使用版本:2.3.0

在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法

在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法

只是,需要我们耐心的读懂文档内容,然后根据自己的业务情况,实现自己想要的效果。

一、子页面获取父页面数据

子页面,要获取父页面的内容,需要使用到layui的一个关键字:parent。通过parent,子页面就可以获取到父页面上的数据了。

例子:从父页面的表格中,点击行的操作按钮,弹出layer层,并将该行的数据传给layer层。

在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法

<table id="role_tb" class="layui-table" lay-data="{width: 1007, height:365, url:'http://localhost:8080/rolelist', page:false, id:'idTest'}" lay-filter="demo">
  <thead>
  <tr>
  <th lay-data="{field:'id', width:100, sort: true}">角色ID</th>
  <th lay-data="{field:'name', width:140}">角色名称</th>
  <th lay-data="{field:'description', width:250}">角色描述</th>
  <th lay-data="{field:'str_createdate', width:200, sort: true}">创建时间</th>
  <th lay-data="{field:'str_updatedate', width:200, sort: true}">更新时间</th>
  <th lay-data="{fixed: 'right', width:110, align:'center', toolbar: '#barDemo'}">操作</th>
  </tr>
  </thead>
 </table>

该表格是由layui根据后台接口动态渲染出来的,那么该如何获取点击按钮所处该行的数据呢?

下列方法完美解决了这个问题!

//这里设置一个空的json串,用于接受表格的行信息
var json;
 
layui.use('table', function(){
  var table = layui.table;
  //监听工具条
  table.on('tool(demo)', function(obj){
   var data = obj.data;
    if(obj.event === 'find'){
    //这行是监听到的表格行数据信息,复制给json全局变量。 
    json = JSON.stringify(data);
    layui.use('layer', function () {
    layer.open({
    title: '查看权限',
    maxmin: true,
    type: 2,
    content: './privileages-manage.html',
    area: ['800px', '500px']
   });
   });
  }
  });
});

----------------------------------------------------这里是子层代码:

$(function () {
  //从父层获取值,json是父层的全局js变量。eval是将该string类型的json串变为标准的json串
  var parent_json = eval('('+parent.json+')');
  console.log(parent_json);  
});

看一下父层和子层的效果。

在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法

在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法

这样,子页面就从父页面获取到了数据。接下来就根据自己的业务,处理数据吧。

所以,可以通过parent关键字,子页面就可以调用父页面的变量、方法。还可以刷新父页面。

parent.location.reload(); // 父页面刷新

二、父页面获取子页面数据

进入layer官方文档,认真阅读,并且可以操作下面的代码,效果更佳直观。http://layer.layui.com/

//注意:parent 是 JS 自带的全局对象,可用于操作父页面
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
 
//让层自适应iframe
$('#add').on('click', function(){
 $('body').append('插入很多酱油。插入很多酱油。插入很多酱油。插入很多酱油。插入很多酱油。插入很多酱油。插入很多酱油。');
 parent.layer.iframeAuto(index);
});
//在父层弹出一个层
$('#new').on('click', function(){
 parent.layer.msg('Hi, man', {shade: 0.3})
});
//给父页面传值
$('#transmit').on('click', function(){
 parent.$('#parentIframe').text('我被改变了');
 parent.layer.tips('Look here', '#parentIframe', {time: 5000});
 parent.layer.close(index);
});
//关闭iframe
$('#closeIframe').click(function(){
 var val = $('#name').val();
 if(val === ''){
  parent.layer.msg('请填写标记');
  return;
 }
 parent.layer.msg('您将标记 [ ' +val + ' ] 成功传送给了父窗口');
 parent.layer.close(index);
});

以上这篇在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于二级域名下使用一级域名下的COOKIE的问题
Nov 07 Javascript
DIV外区域Click后关闭DIV的实现代码
Dec 21 Javascript
nullJavascript中创建对象的五种方法实例
May 07 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
常用的js方法合集
Mar 10 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
jquery实现企业定位式导航效果
Jan 01 jQuery
详解JavaScript中Arguments对象用途
Aug 30 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
Sep 10 #Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 #Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
Sep 10 #Javascript
vscode中eslint插件的配置(prettier配置无效)
Sep 10 #Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 #Javascript
VScode格式化ESlint方法(最全最好用方法)
Sep 10 #Javascript
npm 语义版本控制详解
Sep 10 #Javascript
You might like
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python机器学习之KNN分类算法
2018/08/29 Python
Python发展史及网络爬虫
2019/06/19 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
求职简历自荐信范文
2013/10/21 职场文书
团队会宣传标语
2014/10/09 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
选购到合适的激光打印机
2022/04/21 数码科技
Python时间操作之pytz模块使用详解
2022/06/14 Python