在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 写类方式之一
Jul 05 Javascript
jquery validation插件表单验证的一个例子
Mar 03 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
实用框架(iframe)操作代码
Oct 23 Javascript
Javascript闭包(Closure)详解
May 05 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
Aug 31 Javascript
深入浅析Bootstrap列表组组件
May 03 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
ES6字符串的扩展实例
Dec 21 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实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
详细解析Python中的变量的数据类型
2015/05/13 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
浅析使用Python搭建http服务器
2019/10/27 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
澳大利亚相机之家:Camera House
2017/11/30 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
英语自荐信常用语句
2013/12/13 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
收银员岗位职责范本
2015/04/07 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
python实现简单的聊天小程序
2021/07/07 Python
Python使用openpyxl模块处理Excel文件
2022/06/05 Python