在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 prototype 原型链
Mar 12 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
微信小程序实战之运维小项目
Jan 17 Javascript
微信小程序 开发MAP(地图)实例详解
Jun 27 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
浅析Vue 防抖与节流的使用
Nov 14 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
Vue 实现分页与输入框关键字筛选功能
Jan 02 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
laravel实现前后台路由分离的方法
2019/10/13 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
javascript操作cookie
2017/01/17 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
python网络爬虫采集联想词示例
2014/02/11 Python
python异步任务队列示例
2014/04/01 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
python 实现A*算法的示例代码
2018/08/13 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
Joules美国官网:出色的英国风格
2017/10/30 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
教师专业自荐书范文
2014/02/10 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技