在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 相关文章推荐
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
js倒计时简单实现方法
Dec 17 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
纯JS打造网页中checkbox和radio的美化效果
Oct 13 Javascript
javascript跨域请求包装函数与用法示例
Nov 03 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
Oct 21 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
详解JS函数防抖
Jun 05 Javascript
详解VUE中的插值( Interpolation)语法
Oct 18 Javascript
jQuery插件实现图片轮播效果
Oct 19 jQuery
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批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
Python 文件操作的详解及实例
2017/09/18 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
python 连续不等式语法糖实例
2020/04/15 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
转党组织关系介绍信
2014/01/08 职场文书
银行工作检查书范文
2014/01/31 职场文书
商场消防演习方案
2014/02/12 职场文书
临床医师个人自我评价
2014/04/06 职场文书
计划生育宣传标语
2014/06/21 职场文书
小学生读书笔记
2015/07/01 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
Django框架模板用法详解
2022/06/10 Python