在Layui 的表格模板中,實現(xiàn)layer父頁面和子頁面?zhèn)髦到换サ姆椒?/h1>
更新時間:2019年09月10日 10:07:48 作者:CoderBruis
今天小編就為大家分享一篇在Layui 的表格模板中,實現(xiàn)layer父頁面和子頁面?zhèn)髦到换サ姆椒?,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
最近,在項目中使用到了layer。layer的彈層組件可以說是非常好用,layer 至今仍作為 layui 的代表作。在項目中,需要實現(xiàn)一個在表格里面點擊操作,然后彈出layer層,將父層表格的行值傳給子頁面,子頁面拿到值后,進行業(yè)務(wù)處理,從而實現(xiàn)真正的父子頁面交互。
其實,官方文檔都說的很清楚了。
layui官方文檔:http://layer.layui.com/
使用版本:2.3.0


只是,需要我們耐心的讀懂文檔內(nèi)容,然后根據(jù)自己的業(yè)務(wù)情況,實現(xiàn)自己想要的效果。
一、子頁面獲取父頁面數(shù)據(jù)
子頁面,要獲取父頁面的內(nèi)容,需要使用到layui的一個關(guān)鍵字:parent。通過parent,子頁面就可以獲取到父頁面上的數(shù)據(jù)了。
例子:從父頁面的表格中,點擊行的操作按鈕,彈出layer層,并將該行的數(shù)據(jù)傳給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}">創(chuàng)建時間</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根據(jù)后臺接口動態(tài)渲染出來的,那么該如何獲取點擊按鈕所處該行的數(shù)據(jù)呢?
下列方法完美解決了這個問題!
//這里設(shè)置一個空的json串,用于接受表格的行信息
var json;
layui.use('table', function(){
var table = layui.table;
//監(jiān)聽工具條
table.on('tool(demo)', function(obj){
var data = obj.data;
if(obj.event === 'find'){
//這行是監(jiān)聽到的表格行數(shù)據(jù)信息,復(fù)制給json全局變量。
json = JSON.stringify(data);
layui.use('layer', function () {
layer.open({
title: '查看權(quán)限',
maxmin: true,
type: 2,
content: './privileages-manage.html',
area: ['800px', '500px']
});
});
}
});
});
----------------------------------------------------這里是子層代碼:
$(function () {
//從父層獲取值,json是父層的全局js變量。eval是將該string類型的json串變?yōu)闃藴实膉son串
var parent_json = eval('('+parent.json+')');
console.log(parent_json);
});
看一下父層和子層的效果。


這樣,子頁面就從父頁面獲取到了數(shù)據(jù)。接下來就根據(jù)自己的業(yè)務(wù),處理數(shù)據(jù)吧。
所以,可以通過parent關(guān)鍵字,子頁面就可以調(diào)用父頁面的變量、方法。還可以刷新父頁面。
parent.location.reload(); // 父頁面刷新
二、父頁面獲取子頁面數(shù)據(jù)
進入layer官方文檔,認真閱讀,并且可以操作下面的代碼,效果更佳直觀。http://layer.layui.com/
//注意:parent 是 JS 自帶的全局對象,可用于操作父頁面
var index = parent.layer.getFrameIndex(window.name); //獲取窗口索引
//讓層自適應(yīng)iframe
$('#add').on('click', function(){
$('body').append('插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。');
parent.layer.iframeAuto(index);
});
//在父層彈出一個層
$('#new').on('click', function(){
parent.layer.msg('Hi, man', {shade: 0.3})
});
//給父頁面?zhèn)髦?
$('#transmit').on('click', function(){
parent.$('#parentIframe').text('我被改變了');
parent.layer.tips('Look here', '#parentIframe', {time: 5000});
parent.layer.close(index);
});
//關(guān)閉iframe
$('#closeIframe').click(function(){
var val = $('#name').val();
if(val === ''){
parent.layer.msg('請?zhí)顚憳擞?);
return;
}
parent.layer.msg('您將標記 [ ' +val + ' ] 成功傳送給了父窗口');
parent.layer.close(index);
});
以上這篇在Layui 的表格模板中,實現(xiàn)layer父頁面和子頁面?zhèn)髦到换サ姆椒ň褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
-
用js統(tǒng)計用戶下載網(wǎng)頁所需時間的腳本
下面的方法是個不錯的思路,建議對于js感興趣的朋友,推薦看 2008-10-10
-
javascript輕松實現(xiàn)當(dāng)鼠標移開時已彈出子菜單自動消失
本文為大家詳細介紹下使用javascript實現(xiàn)當(dāng)鼠標移開時已彈出子菜單自動消失,具體如下,感興趣的朋友不要錯過 2013-12-12
-
JavaScript正則函數(shù)中test和match的區(qū)別解析
在javascript中,用于檢測一個字符串是否匹配某個模式用的比較多的就是test和match方法。,這篇文章主要介紹了js正則函數(shù)中test和match的區(qū)別,需要的朋友可以參考下 2022-11-11
-
全面解讀TypeScript和JavaScript的區(qū)別
TypeScript和JavaScript是目前項目開發(fā)中較為流行的兩種腳本語言, TypeScript是JavaScript的一個超集,JavaScript是一種輕量級的解釋性腳本語言,本文主要介紹了兩者區(qū)別,感興趣的可以了解一下 2023-09-09
-
Three.js利用orbit controls插件(軌道控制)控制模型交互動作詳解
這篇文章主要給大家介紹了關(guān)于Three.js利用orbit controls插件,也就是軌道控制來控制模型交互動作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。 2017-09-09
最新評論
最近,在項目中使用到了layer。layer的彈層組件可以說是非常好用,layer 至今仍作為 layui 的代表作。在項目中,需要實現(xiàn)一個在表格里面點擊操作,然后彈出layer層,將父層表格的行值傳給子頁面,子頁面拿到值后,進行業(yè)務(wù)處理,從而實現(xiàn)真正的父子頁面交互。
其實,官方文檔都說的很清楚了。
layui官方文檔:http://layer.layui.com/
使用版本:2.3.0
只是,需要我們耐心的讀懂文檔內(nèi)容,然后根據(jù)自己的業(yè)務(wù)情況,實現(xiàn)自己想要的效果。
一、子頁面獲取父頁面數(shù)據(jù)
子頁面,要獲取父頁面的內(nèi)容,需要使用到layui的一個關(guān)鍵字:parent。通過parent,子頁面就可以獲取到父頁面上的數(shù)據(jù)了。
例子:從父頁面的表格中,點擊行的操作按鈕,彈出layer層,并將該行的數(shù)據(jù)傳給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}">創(chuàng)建時間</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根據(jù)后臺接口動態(tài)渲染出來的,那么該如何獲取點擊按鈕所處該行的數(shù)據(jù)呢?
下列方法完美解決了這個問題!
//這里設(shè)置一個空的json串,用于接受表格的行信息 var json; layui.use('table', function(){ var table = layui.table; //監(jiān)聽工具條 table.on('tool(demo)', function(obj){ var data = obj.data; if(obj.event === 'find'){ //這行是監(jiān)聽到的表格行數(shù)據(jù)信息,復(fù)制給json全局變量。 json = JSON.stringify(data); layui.use('layer', function () { layer.open({ title: '查看權(quán)限', maxmin: true, type: 2, content: './privileages-manage.html', area: ['800px', '500px'] }); }); } }); });
----------------------------------------------------這里是子層代碼:
$(function () { //從父層獲取值,json是父層的全局js變量。eval是將該string類型的json串變?yōu)闃藴实膉son串 var parent_json = eval('('+parent.json+')'); console.log(parent_json); });
看一下父層和子層的效果。
這樣,子頁面就從父頁面獲取到了數(shù)據(jù)。接下來就根據(jù)自己的業(yè)務(wù),處理數(shù)據(jù)吧。
所以,可以通過parent關(guān)鍵字,子頁面就可以調(diào)用父頁面的變量、方法。還可以刷新父頁面。
parent.location.reload(); // 父頁面刷新
二、父頁面獲取子頁面數(shù)據(jù)
進入layer官方文檔,認真閱讀,并且可以操作下面的代碼,效果更佳直觀。http://layer.layui.com/
//注意:parent 是 JS 自帶的全局對象,可用于操作父頁面 var index = parent.layer.getFrameIndex(window.name); //獲取窗口索引 //讓層自適應(yīng)iframe $('#add').on('click', function(){ $('body').append('插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。插入很多醬油。'); parent.layer.iframeAuto(index); }); //在父層彈出一個層 $('#new').on('click', function(){ parent.layer.msg('Hi, man', {shade: 0.3}) }); //給父頁面?zhèn)髦? $('#transmit').on('click', function(){ parent.$('#parentIframe').text('我被改變了'); parent.layer.tips('Look here', '#parentIframe', {time: 5000}); parent.layer.close(index); }); //關(guān)閉iframe $('#closeIframe').click(function(){ var val = $('#name').val(); if(val === ''){ parent.layer.msg('請?zhí)顚憳擞?); return; } parent.layer.msg('您將標記 [ ' +val + ' ] 成功傳送給了父窗口'); parent.layer.close(index); });
以上這篇在Layui 的表格模板中,實現(xiàn)layer父頁面和子頁面?zhèn)髦到换サ姆椒ň褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
用js統(tǒng)計用戶下載網(wǎng)頁所需時間的腳本
下面的方法是個不錯的思路,建議對于js感興趣的朋友,推薦看2008-10-10javascript輕松實現(xiàn)當(dāng)鼠標移開時已彈出子菜單自動消失
本文為大家詳細介紹下使用javascript實現(xiàn)當(dāng)鼠標移開時已彈出子菜單自動消失,具體如下,感興趣的朋友不要錯過2013-12-12JavaScript正則函數(shù)中test和match的區(qū)別解析
在javascript中,用于檢測一個字符串是否匹配某個模式用的比較多的就是test和match方法。,這篇文章主要介紹了js正則函數(shù)中test和match的區(qū)別,需要的朋友可以參考下2022-11-11全面解讀TypeScript和JavaScript的區(qū)別
TypeScript和JavaScript是目前項目開發(fā)中較為流行的兩種腳本語言, TypeScript是JavaScript的一個超集,JavaScript是一種輕量級的解釋性腳本語言,本文主要介紹了兩者區(qū)別,感興趣的可以了解一下2023-09-09Three.js利用orbit controls插件(軌道控制)控制模型交互動作詳解
這篇文章主要給大家介紹了關(guān)于Three.js利用orbit controls插件,也就是軌道控制來控制模型交互動作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-09-09