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


只是,需要我們耐心的讀懂文檔內(nèi)容,然后根據(jù)自己的業(yè)務(wù)情況,實(shí)現(xiàn)自己想要的效果。
一、子頁面獲取父頁面數(shù)據(jù)
子頁面,要獲取父頁面的內(nèi)容,需要使用到layui的一個關(guān)鍵字:parent。通過parent,子頁面就可以獲取到父頁面上的數(shù)據(jù)了。
例子:從父頁面的表格中,點(diǎn)擊行的操作按鈕,彈出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}">角色I(xiàn)D</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)渲染出來的,那么該如何獲取點(diǎn)擊按鈕所處該行的數(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)闃?biāo)準(zhǔn)的json串
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ù)
進(jìn)入layer官方文檔,認(rèn)真閱讀,并且可以操作下面的代碼,效果更佳直觀。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í)顚憳?biāo)記');
return;
}
parent.layer.msg('您將標(biāo)記 [ ' +val + ' ] 成功傳送給了父窗口');
parent.layer.close(index);
});
以上這篇在Layui 的表格模板中,實(shí)現(xiàn)layer父頁面和子頁面?zhèn)髦到换サ姆椒ň褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
-
js ajaxfileupload.js上傳報(bào)錯的解決方法
這篇文章主要為大家詳細(xì)介紹了js ajaxupload.js上傳報(bào)錯的解決方法,感興趣的小伙伴們可以參考一下 2016-05-05
-
基于JavaScript實(shí)現(xiàn)自動更新倒計(jì)時效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)自動更新倒計(jì)時效果,元旦倒計(jì)時代碼分享,具有一定的參考價值,感興趣的小伙伴們可以參考一下 2016-12-12
-
細(xì)品javascript 尋址,閉包,對象模型和相關(guān)問題
似乎某些程序員的集合是不相交的,就好像JS程序員和玩編譯原理和CPU指令的匯編程序員就幾乎沒有交叉。前些日子討論的火熱的“作用域鏈”問題,說白了就是尋址問題,不過,這個在C中十分簡單的問題卻被JS這個動態(tài)語言弄得很復(fù)雜。 2009-04-04
-
js+div實(shí)現(xiàn)文字滾動和圖片切換效果代碼
這篇文章主要介紹了js+div實(shí)現(xiàn)文字滾動和圖片切換效果代碼,涉及javascript鼠標(biāo)事件及頁面元素圖片滾動效果實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下 2015-08-08
-
javascript中的循環(huán)語句for語句深入理解
for循環(huán)是多數(shù)語言都有的。在javascript中,for循環(huán)有幾種不同的使用情況,下面為大家一一介紹下 2014-04-04
-
基于JavaScript Array數(shù)組方法(新手必看篇)
下面小編就為大家?guī)硪黄贘avaScript Array數(shù)組方法(新手必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 2016-08-08
最新評論
最近,在項(xiàng)目中使用到了layer。layer的彈層組件可以說是非常好用,layer 至今仍作為 layui 的代表作。在項(xiàng)目中,需要實(shí)現(xiàn)一個在表格里面點(diǎn)擊操作,然后彈出layer層,將父層表格的行值傳給子頁面,子頁面拿到值后,進(jìn)行業(yè)務(wù)處理,從而實(shí)現(xiàn)真正的父子頁面交互。
其實(shí),官方文檔都說的很清楚了。
layui官方文檔:http://layer.layui.com/
使用版本:2.3.0


只是,需要我們耐心的讀懂文檔內(nèi)容,然后根據(jù)自己的業(yè)務(wù)情況,實(shí)現(xiàn)自己想要的效果。
一、子頁面獲取父頁面數(shù)據(jù)
子頁面,要獲取父頁面的內(nèi)容,需要使用到layui的一個關(guān)鍵字:parent。通過parent,子頁面就可以獲取到父頁面上的數(shù)據(jù)了。
例子:從父頁面的表格中,點(diǎn)擊行的操作按鈕,彈出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}">角色I(xiàn)D</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)渲染出來的,那么該如何獲取點(diǎn)擊按鈕所處該行的數(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)闃?biāo)準(zhǔn)的json串
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ù)
進(jìn)入layer官方文檔,認(rèn)真閱讀,并且可以操作下面的代碼,效果更佳直觀。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í)顚憳?biāo)記');
return;
}
parent.layer.msg('您將標(biāo)記 [ ' +val + ' ] 成功傳送給了父窗口');
parent.layer.close(index);
});
以上這篇在Layui 的表格模板中,實(shí)現(xiàn)layer父頁面和子頁面?zhèn)髦到换サ姆椒ň褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
js ajaxfileupload.js上傳報(bào)錯的解決方法
這篇文章主要為大家詳細(xì)介紹了js ajaxupload.js上傳報(bào)錯的解決方法,感興趣的小伙伴們可以參考一下2016-05-05
基于JavaScript實(shí)現(xiàn)自動更新倒計(jì)時效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)自動更新倒計(jì)時效果,元旦倒計(jì)時代碼分享,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
細(xì)品javascript 尋址,閉包,對象模型和相關(guān)問題
似乎某些程序員的集合是不相交的,就好像JS程序員和玩編譯原理和CPU指令的匯編程序員就幾乎沒有交叉。前些日子討論的火熱的“作用域鏈”問題,說白了就是尋址問題,不過,這個在C中十分簡單的問題卻被JS這個動態(tài)語言弄得很復(fù)雜。2009-04-04
js+div實(shí)現(xiàn)文字滾動和圖片切換效果代碼
這篇文章主要介紹了js+div實(shí)現(xiàn)文字滾動和圖片切換效果代碼,涉及javascript鼠標(biāo)事件及頁面元素圖片滾動效果實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
javascript中的循環(huán)語句for語句深入理解
for循環(huán)是多數(shù)語言都有的。在javascript中,for循環(huán)有幾種不同的使用情況,下面為大家一一介紹下2014-04-04
基于JavaScript Array數(shù)組方法(新手必看篇)
下面小編就為大家?guī)硪黄贘avaScript Array數(shù)組方法(新手必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08

