一种在Page跳转中实现回调函数的思路
发布于 4 年前 作者 liqin 742 次浏览 来自 分享

场景:

pageA是商品列表,pageB是商品编辑,pageA跳转到pageB保存之后需要更新pageA的数据。

当然跳转到pageB的还可能是其他页面

实现:

// pageA
Page({
  data: {
    // ...
  },
  editGoods: function(id) {
    wx.navigateTo({
      url: 'pageB?success=editSuccesss' // 把回调函数用字符串的方式告诉pageB
    })
  },
  editSuccess() {
    // ...处理回调
  }
})

// pageB
Page({
  data: {
    // ...
  },
  onLoad: function(options) {
    this.success = options.success
  },
  save: function() {
    if (this.success) {
      //获取上一个页面并执行回调
      var pages = getCurrentPages()
      pages[pages.length - 2][this.success]() // 回调时还可以增加参数
    }
    wx.navigateBack()
  }
}) 
2 回复

我都是固定一个方法名字的。

    doGoBackAndCallBack() {
      let that = this;
      var pages = getCurrentPages();
      var currPage = pages[pages.length - 2]; //当前页面
      if (currPage && currPage.callback && typeof currPage.callback == "function") {
        currPage.callback({
          deposit_id: that.depositAssureId,
        });
      }
      setTimeout(() => {
        wx.navigateBack({
          delta: 1
        });
      }, 1000);
    }
 getCurrentPages()  也可以获取A页面的值啊,你不是不想传参吗
回到顶部