在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 相关文章推荐
解放web程序员的输入验证
Oct 06 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
JQuery用户名校验的具体实现
Mar 18 Javascript
前端性能优化及技巧
May 06 Javascript
Bootstrap学习笔记之js组件(4)
Jun 12 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
Mar 02 Javascript
JS实现获取进今年第几天是周几的方法分析
Jun 27 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 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新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP7修改的函数
2021/03/09 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python实现两个文件合并功能
2018/04/01 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Python如何实现转换URL详解
2019/07/02 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python_mask_array的用法
2020/02/18 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
优秀学生干部推荐材料
2014/02/03 职场文书
承诺书的格式范文
2014/03/28 职场文书
环保公益策划方案
2014/08/15 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
小学班主任心得体会
2016/01/07 职场文书
python中的getter与setter你了解吗
2022/03/24 Python