近期因为项目原因使用layui框架在做一个PC端管理项目,作为刚开始接触layui框架,难免会无限踩坑,踩坑,踩坑,现将踩过的坑都记录一下,借此表示本人到此坑一游
关于layui父子页面传值,百度一下有一大堆博客和大神提供了很多的方法,我仅把我使用过的方法粘贴出来。
js 父页面给子页面传参方法:
//给子页面传值,editInterfaceParams为传递给子页面的参数名,子页面根据该参数名来获取传递的参数值 editInterfaceParams=obj.data; layer.open({ title:"接口编辑", type: 2, area: admin.screen() < 2 ? ['80%', '300px'] : ['800px', '660px'], fixed: false, maxmin: true, content: layui.setter.base + 'views/interface/editInterface.html'})
注:在定义给子页面传值时的变量名要使用 var 来定义,类似于把需要传递的参数变为全局参数放入window内
子页面获取父页面参数:
//获取父页面参数 var parentData=parent.editInterfaceParams; console.log(parentData);
子页面通过使用 parent.父页面传递参数名 来获取父页面参数。
子页面给父页面传参:
//子页面给父页面传参 parent.selectInterfaceMap = parentMap;
子页面给父页面传参可以效仿获取父页面参数的方法,使用parent.参数名=参数 的方法将参数设为全局,然后父页面获取
该方法虽然能解决传参问题,但也有其不足之处。
1、如果做多个页面传参则需要定义多个参数名赋值参数,这样会很乱,所以在定义参数名称时需要区别好功能做定义
2、如果是传递的map或集合,在子页面做操作时会同步的修改父页面定义传子页面的map或集合,这时候需要在子页面重新定义一个对象,然后将父页面传递的集合或map参数遍历赋给子页面定义的对象内。