在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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤
Apr 23 Javascript
类似CSDN图片切换效果脚本
Sep 17 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
Nov 19 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
Dec 16 Javascript
jquery新的绑定事件机制on方法的使用方法
Apr 15 Javascript
javascript手风琴下拉菜单实现代码
Nov 12 Javascript
原生JS实现网络彩票投注效果
Sep 25 Javascript
vue插件实现v-model功能
Sep 10 Javascript
JS实现贪吃蛇游戏
Nov 15 Javascript
Node.js控制台彩色输出的方法与原理实例详解
Dec 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
制作美丽的拉花
2021/03/03 冲泡冲煮
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
php写app用的框架整理
2019/09/29 PHP
菜鸟javascript基础资料整理2
2010/12/06 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
Python 3 判断2个字典相同
2019/08/06 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python打印不合法的文件名
2020/07/31 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
解除劳动合同协议书
2014/04/14 职场文书
关于爱国的标语
2014/06/24 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
博士生专家推荐信
2014/09/26 职场文书
团员个人年度总结
2015/02/26 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书