在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中this关键字使用方法详解
Mar 08 Javascript
javascript 贪吃蛇实现代码
Nov 22 Javascript
基于JQuery的6个Tab选项卡插件
Sep 03 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
jQuery常用操作方法及常用函数总结
Jun 19 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
单击按钮发送验证码,出现倒计时的简单实例
Mar 17 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
js实现简单选项卡功能
Mar 23 Javascript
Vue监听页面刷新和关闭功能
Jun 20 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
php实现简单四则运算器
2020/11/29 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
详解Python中的type和object
2018/08/15 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
Python中断多重循环的思路总结
2019/10/04 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
python中re模块知识点总结
2021/01/17 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
项目验收申请报告
2015/05/15 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
MySQL 计算连续登录天数
2022/05/11 MySQL
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript