收藏
回答

返回上一页刷新数据时为什么失效?

需求描述:用户从A页面进入B页面,在B页面添加cases数据,success后自动返回A页面,并刷新A页面的数据

B页面添加数据的代码:

dbPainter.doc(id).update({
      data:{
        cases:_.unshift(exam),
      },
      success:res=>{
        wx.showToast({
          title'上传成功',
          duration:1000,
        })
        let pages = getCurrentPages;
        let prePage = pages[pages.length - 2];
        prePage.getCases();
        setTimeout(() => {
          wx.navigateBack({
            delta:1,
          })
        },1000);
      },

A页面获取数据的方法getCases:

getCases(){
    let _id = this.data.id;
    dbPainter.where({
      _id,
    }).limit(1).field({
      cases:true,
    }).get({
      success:res=>{
        this.setData({cases:res.data[0].cases})
      }
    })
  },

在B页面success后调用了wx.navigateback返回到A页面,但失效,去掉刷新上一页面的方法getCases()后就能正常返回,但不是我想要的效果(就不能刷新数据了)。求解为什么

回答关注问题邀请回答
收藏

3 个回答

  • 山山而川
    山山而川
    2021-07-13

    功能:A页面显示数据,B页面添加数据,

    需求:B页面添加成功后,在success后获取页面栈,并调用A页面的方法

    代码实现:

    B页面:

    success:res=>{
      let pages = getCurrentPages();//获取当前页面栈
      let prePage = pages[pages.length - 2];//获取上一页面对象
      prePage.getCases(exam);//调用上一页面的getCases(),且传入参数
      wx.navigateBack({
        delta:1,
      })
    }
    

    B页面getCases()方法:

    getCases(exam){
       let cases = this.data.cases.unshift(exam);
       this.setData({cases})
    },
    
    2021-07-13
    有用
    回复
  • Hello W
    Hello W
    2021-07-13
    在onShow里面放getCases
    


    2021-07-13
    有用
    回复 1
    • 山山而川
      山山而川
      2021-07-13
      感谢回复!

      在A页面用onShow是返回后调用的方法(有的场景这样做有点臃肿),这个我知道,我想实现的是在B页面还没有返回A页面时就刷新A页面的数据,即在B页面调用A页面的方法.
      先已解决,在B页面的getCurrentPages少了个().
      2021-07-13
      回复
  • 2021-07-13

    得看你A页面加载数据源的方法 是放在onLoad里面还是onShow里面了,可以看文档了解一下两者的区别

    2021-07-13
    有用
    回复 1
    • 山山而川
      山山而川
      2021-07-13
      已解决,感谢回答
      2021-07-13
      回复
登录 后发表内容