二级页面信息改变的同时,如何实时更新一级页面信息呢?非常困惑,求解答,谢谢!
发布于 6 年前 作者 bwei 14559 次浏览 来自 问答

我在二级页面填写了个人信息保存,回到一级页面还是最初的页面信息。我是通过onShow()事件进行刷新页面信息的。但是会出现一个问题:每次进入一级页面会先出现旧的信息页面,等一秒才会执行onShow()事件的刷新,这个会觉得很不舒服。怎么实现信息实时的更新呢?

我希望,可以二级信息页面改变,回到一级信息页面,不出现旧的信息,而是直接出现新的信息页面。

希望得到解答,谢谢啦!!!

情人节快乐!

7 回复

就是觉得onShow会有你说的卡顿现象,想要改进。。

在页面显示的时候加载就会更新了,

onload只会加载一次,所有最好是在onshow里面做更新视图的操作

谢谢朋友:天下雪。我看了链接文章,的确给我提供了一个思路,只是还是有问题,没有解决。使用getCurrentPages()会涉及一个页面跳转的顺序问题。如果通过不同途径进入相同的页面,比如A跳到D页面,有两条途径:1.A->B->D;2.A->B->C->D.这样子就很难利用getCurrentPages()函数,实时更新数据了。

总之,非常感谢!

首先,通过wx.navigateTo打开第二个页面,在二级页面填写个人信息保存填写的信息到公共变量(可以在app.js里面定义一个)里面,再通过wx.navigateBack,回到一级页面,在onShow时间里面执行setData即可更新,刷新的时间与要更新的data数据大小有关,我这边测试过,在onShow时间里面执行setData,我的data数据有160KB的样式,会有1-2秒的卡顿。

//一级页面

chooseArea:function(e){
      wx.navigateTo({
        url:"/pages/common/area/index"
      })
  },
  onShow: function () {
      this.setData({
          area3:{
            checked:app.globalData.area3.checked,
            inputData:app.globalData.area3.inputData
          }
      });
  },

//二级页面

trueArea:function(e){
        var time=e.timeStamp;
        if(!app.validEvent(e,500)){
            return;
        }
        var _this=this;
        app.globalData.area3=_this.data;
        wx.navigateBack()
    },

不是有onload吗?

回到顶部