微信小程序学习:navigateTo url 如何带多个参数&从子页面退回父页面时的数据传递

本文介绍了微信小程序中遇到的两个问题:一是如何避免在详情页返回列表页时重复触发onReachBottom事件,解决方案是将加载数据的方法放在onLoad而不是onShow;二是详细讲解了navigateTo如何携带多个参数跳转到子页面,并在子页面修改父页面数据,通过设置join状态并在子页面返回时传递更新信息。文中提供了实现思路和错误处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中遇到一个问题:

问题一:

IndexList是加载列表页数据的方法,getItems()是加载更多数据的方法,放在onReachBottom()中,onReachBottom()是小程序api中触底加载事件。

IndexList: function() {
  var n = this, o = [];
  page = 1;
  var e = wx.getStorageSync("openid");
  app.util.request({
    url: "entry/wxapp/IndexList",
      data: {
      openid: e
    },
    success: function(e) {
      for (var t = e.data.data, a = 0; a < t.length; a++) {
        o.push(t[a]);  
      }
      n.setData({
        IndexList: o
      });
      if (o.length < 0) {
        n.setData({
          show: true
        });
      } 
    },
    fail: function(e) {
      console.log(e);
    }
  }), n.setData({
    currentTab: null
  });
  console.log('indexlist的 '+ page)
},
onReachBottom: function() {
      wx.showLoading({
        title: '加载中...',
      });
      console.log('触发onReachBottom ' + page)
      this.data.ismore && (page++ , this.getItems(page));   
},
getItems: function (e) {
      var o = this, t = wx.getStorageSync("openid");
      app.util.request({
        url: "entry/wxapp/IndexList",
        data: {
          page: e,
          openid: t
        },
        success: function (e) {
          for (var t = o.data.IndexList, a = e.data.data, n = 0; n < a.length; n++) t.push(a[n]);
          o.setData({
            IndexList: t
          });
        },
        fail: function (e) {
          console.log(e);
        }
      });
      console.log('加载getitems' + page)
},

如果把IndexList放在onShow()中,详情页返回列表页的时候,会导致重复触发onReachBottom(),所以indexList只能放在onLoad()中.

onLoad: function() {
      wx.showLoading({
        title: '加载中...',
      });
      this.IndexList();
},

 

问题二:

点击奖品列表中的第index个奖品,跳转到该奖品详情页,详情页中点击参加抽奖,返回列表页时,要增加已参与标识。

实现思路:已参与状态:join=1。未参与状态 join=-1。

                  点击参加抽奖时,设置join=1,并把这个设置赋值到列表页中对应id的奖品信息上去。则实现要点为:

1、列表页点击某奖品,将该奖品在列表中的索引值传递到详情页中。

即:navigateTo url 如何带多个参数

跳转到对应页面以后,在onLoad方法里面function(e){e.t,e.index}来接收

2.加载详情页时,获取该索引值,随后点击参与时,修改上个页面的对应索引值的奖品的join状态,即从子页面返回父级页面时数据传递问题

data:

onload:

用setData修改对象中的某一个属性值

formsubmit:

如下图,思路正确,但是报错。

解决:使用字符串拼接的方法   系统就会识别了。

还有其他bug可以参考https://blog.csdn.net/In_The_Wind0/article/details/79042180这篇文章。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值