在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 相关文章推荐
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
js汉字转拼音实现代码
Feb 06 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
Jun 17 Javascript
jQuery AjaxUpload 上传图片代码
Feb 02 Javascript
动态的9*9乘法表效果的实现代码
May 16 Javascript
老生常谈的跨域处理
Jan 11 Javascript
vue.extend实现alert模态框弹窗组件
Apr 28 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 Javascript
vue项目中引入vue-datepicker插件的详解
May 14 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
Aug 20 Javascript
JavaScript缺少insertAfter解决方案
Jul 03 Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 23 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 sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
node后端服务保活的实现
2019/11/10 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
python读取Android permission文件
2013/11/01 Python
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
违纪检讨书
2015/01/27 职场文书
合作与交流自我评价
2015/03/09 职场文书
廉政承诺书范文
2015/04/28 职场文书
2015年国培研修感言
2015/08/01 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技
Redis主从复制操作和配置详情
2022/09/23 Redis
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS