在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 相关文章推荐
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
Aug 05 Javascript
Jquery ui css framework
Jun 28 Javascript
JavaScript日历实现代码
Sep 12 Javascript
Js基础学习资料
Nov 23 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
Apr 17 Javascript
js判断是否按下了Shift键的方法
Jan 27 Javascript
jQuery AjaxUpload 上传图片代码
Feb 02 Javascript
js变量提升深入理解
Sep 16 Javascript
微信小程序实现拖拽功能
Sep 26 Javascript
对vuex中getters计算过滤操作详解
Nov 06 Javascript
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
如何判断php数组的维度
2013/06/10 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
Django中的cookie和session
2019/08/27 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Python如何获取文件指定行的内容
2020/05/27 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
python math模块的基本使用教程
2021/01/16 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
初中军训感想300字
2014/03/05 职场文书
英文请假条
2014/04/11 职场文书
幼儿教师辞职信
2015/02/27 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
Python基本知识点总结
2022/04/07 Python
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript