• 小程序项目复盘(三) 用全局变量传参的问题


    全局变量传参,在正确情况下用起来确实十分方便,任何页面都能取到全局变量,但也不能滥用,举两个我在项目中用到的例子:

    1.在全局变量中设置一个userInfo,用来存储我登录后的用户全部信息,这个信息在其他页面都需要用到,节约了不少事情,这是事半功倍的正确做法;

    还有一些用来标识页面类型的变量,在此不一 一举例了:

    2.我在全局变量中设置了两个变量: 

    本意是在当前页面获得的信息中,想点击某个具体信息页面使之前获得的信息传进去。如果单看仅在两个页面之间传递,是行得通的,但是我在许多页面都使用到了这两个data传参,情况就很gg了。

    具体情节:

    在当前页面,我获得了我关注的人的列表以及具体信息,那么我点击这个人,index会被此下标也就是0占据,indexId会被这个人的信息占据:

    到这里传参是没有问题的。

     到了这个页面后,我点击已发布下具体的某条,则此时:index=0(我点击的那条下标),indexId=我点击的那条具体信息(已与之前不同),显示仍然正常,但当我后退回到用户页面时:

     用户具体信息没有了!

     此页面用户信息仍是获取的indexId里的信息,但已经改变,所以基本信息没有了,并且用此信息请求的接口会报错。

    *当要在许多页面都修改的全局变量,不适合作传参工具

    解决办法:跳转页面时用url传参

     inDetails: function (e) {
        var index = e.currentTarget.dataset.index;
        console.log("进入第几个", index);
        var msg = JSON.stringify(this.data.goodsArr[index]);     //取到当前所需要的信息
        console.log(msg)
        if(this.data.status===("yes")){
        app.globalData.isBuy = true;
        }
        wx.navigateTo({
          url: '../details/details?msg=' + msg,               //将此信息通过url传参进去
        })
      },
      onLoad: function (option){
        var e=option;
        var good=JSON.parse(e.msg)                             //接收参数
       }

     更改后就没有错误啦!

  • 相关阅读:
    通俗易懂的讲解iphone视图控制器的生命周期
    HTML5学习(十一)---服务器发送事件
    HTML5学习(十)---Web Workers
    HTML5学习(九)----应用程序缓存
    HTML5学习(八)----Web存储
    HTML5学习(七)----地理定位
    HTML5学习(六)---------SVG 与Canvas
    HTML5学习(五)----SVG
    HTML5学习(四)---Canvas绘图
    第六章在U盘上运行openwrt(引导)--补
  • 原文地址:https://www.cnblogs.com/xmjs/p/12592038.html
Copyright © 2020-2023  润新知