《layuiopen_layuiopen传参数》
在使用layui框架时,有时需要通过layuiopen
(假设为自定义或笔误,应为layer.open)进行页面弹出层的打开操作并传递参数。解决方案是利用layer.open方法中的相关属性来实现参数的传递。
一、直接在data参数中传递
这是最简单直接的一种方式。可以在layer.open的配置项中设置一个data属性,将需要传递的数据放在这个对象里。
javascript
// 定义要传递的参数对象
var sendData = {
id: 1,
name: "example"
};</p>
<p>layer.open({
type: 2, // 这里以iframe层为例
title: '标题',
content: 'yourpage.html', // 弹出层内容地址
data: sendData // 直接传递参数对象
});
然后在被打开的页面中,可以通过layer提供的接口获取到这个参数。例如,在yourpage.html
对应的JavaScript文件中:
javascript
// 获取父页面传递过来的参数
var parentData = parent.layer.getData();
console.log(parentData.id); // 输出1
console.log(parentData.name); // 输出"example"
二、通过url参数传递
如果是以页面跳转的形式打开弹出层,也可以将参数附加到url后面。
javascript
var paramStr = "?id=1&name=example";
layer.open({
type: 2,
title: '标题',
content: 'yourpage.html' + paramStr
});
在yourpage.html
中就可以用JavaScript解析url获取参数了。可以借助URLSearchParams对象:
javascript
// 获取url中的参数
var urlParams = new URLSearchParams(window.location.search);
var id = urlParams.get("id");
var name = urlParams.get("name");
console.log(id); // 输出1
console.log(name); // 输出"example"
三、利用全局变量(不推荐)
虽然这种方法不太规范,但在一些特殊场景下可能也会用到。就是在父页面定义一个全局变量存储要传递的参数。
javascript
window.globalParam = {
id: 1,
name: "example"
};
layer.open({
type: 2,
title: '标题',
content: 'yourpage.html'
});
在yourpage.html
中:
javascript
console.log(parent.globalParam.id); // 输出1
console.log(parent.globalParam.name); // 输出"example"
不过这种做法可能会导致全局变量污染等问题,所以一般不建议使用。