让你的页面变成一个组件,在其他任意地方(页面/组件/...)使用函数调用,而不需要navigateTo..
/* address-select.js
* 选择地址页面
*/
Page({
data: {
list: []
},
onLoad(options) {
// ...
}
tapItem(e) {
const index = e.currentTarget.dataset.index * 1
const item = this.data.list[index]
if (typeof this.success === 'function') {
this.success(item)
wx.navigateBack()
}
}
})
let addEvent
addEvent = function(oldPageCount, fn) {
const pages = getCurrentPages()
if (pages.length > oldPageCount) {
pages[pages.length - 1].success = fn
} else {
setTimeout(addEvent, 300)
}
}
module.exports = {
selectAddress: async () => {
let pageCount = getCurrentPages()
return new Promise((resolve, reject) => {
wx.navigateTo({
url: '/pages/address-select',
success() {
// 在wx.navigateTo的success回调里调用getCurrentPages不会立即获得新的页面
// 所以需要使用setTimeout定时检查以便获取新的页面
addEvent(pageCount, res => {
resolve(res)
})
}
})
})
}
}
其他页面或者组件中使用啦
import { selectAddress } from 'address-select'
const address = await selectAddress()
// 你的页面变成了一个公用组件,非常方便调用和获取回传值...
// add your code here