多个页面间事件怎么传递呢?

发布于 9 年前作者 tao544133 次浏览最后编辑 9 年前来自 issues

现在有个需求A页面打开B页面,B页面打开C页面,

C页面操作完后触发A页面的方法。

小程序的EventChannel好像行不通,那还有什么方法可以实现这种需求吗。。求各位大大赐教。

6 回复
gangfu
gangfu1 楼6 年前

这样在C页面操作完后写就能 操作A页面的testFn方法

 const pages = getCurrentPages();
let lastPage = pages[pages.length - 3];   //  -1 是当前页面c  -2  是上一页B   -3是上上一页A
lastPage.testFn();   //这里就是  lastPage 相当于A页面的this

--↓↓👍点赞是回答的动力哦

yangqiang
yangqiang2 楼6 年前

1、getCurrentPages拿到对应页面进行操作

2、在C页面将要做的事情放到app.js(也可以是别的全局的js)里,然后A页面onShow的时候执行

luolei
luolei3 楼6 年前

getCurrentPages拿到对应页面,不知道是不是有a,可以在通过传递参数或者存缓存标志位判断

yejing
yejing4 楼6 年前

C触发B,B再触发A就可以了。

baili
baili5 楼6 年前

const pages = getCurrentPages();

然后找出C页面的index,直接调用里面的方法

mhuang
mhuang6 楼6 年前

EventChannel可以的

c.js


  /**
   * 生命周期函数--监听页面加载
   */
  onLoadfunction (options{
    var that = this
     let eventChannel = this.getOpenerEventChannel();
      eventChannel.on('acceptDataFromOpenerPage'function (data{
        if (data) {    
   
            data.data.afunc() //触发 A页面方法
          
        }
       
      })
  },

b.js

  goc(){
    var that = this
    wx.navigateTo({
      url'./c',
      successfunction (res{
        res.eventChannel.emit('acceptDataFromOpenerPage', {
          data: that.data.dataa
        })
      }
    }) 
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoadfunction (options{
    var that = this
     let eventChannel = this.getOpenerEventChannel();
      eventChannel.on('acceptDataFromOpenerPage'function (data{
        if (data) {          
          that.setData({dataa :data.data})
        }
       
      })
  },

a.js

  afunc(){
    console.log('ok')
  },
  gob(){
    var that = this
    wx.navigateTo({
      url'./b',
      successfunction (res{
        res.eventChannel.emit('acceptDataFromOpenerPage', {
          data: that
        })
      }
    })   
  },