【超级简单】Layui layer.open()实现中父子页面传参-table中的参数值、或者其他参数

最近在用LayUI框架的时候有这样一个需求:点击answer.html的【查看评论】按钮的时候,用layer.open()打开一个子页面,里面contant的是一个html页面(comments.html),其中这个页面里展示的是该回答的评论内容。
点击【查看评论】按钮的时候,将表单中的【回答ID】的值传给表单中的子页面,然后在子页面中用ajax把这个ID值传给后台,查询评论内容,在子页面中进行展示。这里涉及到一个简单的问题:如何在点击按钮的时候,把表单中ID值传给子页面呢?
在这里在插入图片描述
表单定义如下,具体的每一个参数都在官方文档中有,不懂的可以去查一下:

 table.render({
    elem: '#test'
      ,id:"AnswerReload"
    ,title: '回答情况表'
    ,where: {
          question_id: question_id,//请求参数
      }
      ,method: 'post'//请求方式
    ,contentType: "application/json;charset=utf-8"//传输的数据格式
    ,url: 'http://192.168.*.*:8000/answer_post/'//数据接口
    ,toolbar: '#toolbarDemo'
    ,defaultToolbar: ['filter', 'exports', 'print']
    ,jump: function(obj){
      console.log(obj)
    }
    ,cols: [[
      {type: 'checkbox', fixed: 'left',width:50}
      ,{field:'id', title:'回答ID',align:'center', width:85, fixed: 'left', unresize: true,id:'answer_id'}
      ,{field:'author', title:'作者',align:'center', width:80,templet:'#author_link'}
      ,{field:'created_time', title:'创建时间', align:'center',width:110, sort: true,}
      ,{fixed: 'right', title:'操作', align:'center',toolbar: '#barDemo'}
    ]]
    });

这是我定义的button按钮,这个id值就是表单中的toolbar的值:

<script type="text/html" id="barDemo">
  <a class="layui-btn  layui-btn-normal layui-btn-xs" lay-event="comments">查看评论</a>
</script>

这里是对表格中的事件设置的监听。

  table.on('tool(test)', function(obj){//test是原始表单中的lay-filter的值,obj是表单中改行的元素
    var data = obj.data;
    console.log(obj.data)
    if(obj.event === 'comments'){
        answer_id = data.id;//就是表单中这一行的id值,也就是要传给子页面的数据。
       layer.open({
          type: 2,//如果要打开一个html页面的话,这个type值就是2.如果要打开一个文本,这个值就是1.
           title:'评论详情',
          area:['400px','500px'],
          content: 'comments_show.html',//要打开的子页面
           async:false,
           loading:true,
           closeBtn: 1,
       }
       );
    }});

如何在layer.open中把这个id值传给子页面??我在网上查了以后,尝试用body.find()方法传递,而且大部分回答都是比较麻烦,对于新手比较难理解。我把我的解决方法写出来,希望给新手们提供一点帮助,少走一些弯路。
在这里插入图片描述
一个更简单的方法就是:在父页面中定义一个全局变量,然后在子页面中用parent.answer_id就可以获取这个值了。相当于父子页面共享同一个参数。layer.open()中可以不另外设置。代码如下:

父页面中(answer.html)中

<script type="text/html" id="barDemo">
  <a class="layui-btn  layui-btn-normal layui-btn-xs" lay-event="comments">查看评论</a>
</script>
<script>
var answer_id;//全局变量,用来记录每一个id值,划重点!!!关键!!!
layui.use(['table','layer','form','laypage','rate'], function(){
  var table = layui.table,
     layer = layui.layer;
   table.render({
    elem: '#test'
      ,id:"AnswerReload"
    ,title: '回答情况表'
    ,where: {
          question_id: question_id,//请求参数
      }
      ,method: 'post'//请求方式
    ,contentType: "application/json;charset=utf-8"//传输的数据格式
    ,url: 'http://192.168.*.*:8000/answer_post/'//后台数据接口
 
    ,toolbar: '#toolbarDemo'
    ,defaultToolbar: ['filter', 'exports', 'print']
    ,jump: function(obj){
      console.log(obj) }
    ,cols: [[
      {type: 'checkbox', fixed: 'left',width:50}
      ,{field:'id', title:'回答ID',align:'center', width:85, fixed: 'left', unresize: true,id:'answer_id'}
      ,{field:'author', title:'作者',align:'center', width:80,templet:'#author_link'}
      ,{field:'created_time', title:'创建时间', align:'center',width:110, sort: true,}
      ,{fixed: 'right', title:'操作', align:'center',toolbar: '#barDemo'}
    ]]
    });
    //监听点击按钮事件,test是原始表单中lay-filter的值
table.on('tool(test)', function(obj){//test是原始表单中的lay-filter的值,obj是表单中改行的元素
    var data = obj.data;//获取表单中的点击按钮的那一行数据
    console.log(obj.data)
    if(obj.event === 'comments'){
       answer_id = data.id;//就是表单中这一行的id值,也就是要传给子页面的数据。
       layer.open({//这里可以不写success
          type: 2,//如果要打开一个html页面的话,这个type值就是2.如果要打开一个文本,这个值就是1.
           title:'评论详情',
          area:['400px','500px'],
          content: 'comments_show.html',//要打开的子页面
           async:false,
           loading:true,
           closeBtn: 1,
       }
       );
    }});
</script>

子页面(comments.html)页面

<script>
 var answer_id = parent.answer_id;//这样是不是很简单?用parent就可以直接获取父页面的全局变量了。
 //接下来,就是利用ajax传值了,或者其他的操作都可以!!
</script>

结束!!!!

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值