场景:
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()
}
})
主要是用于小程序组件间通信;包括:page之间通信,component之间通信,page与component之间通信;
https://github.com/boiledwater/wx-event-bus
可以看看如上是否合适
您好,传过来的回调函数是字符串,调用的时候会提示不是一个函数,这个您是怎么解决的
我都是固定一个方法名字的。
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); }