让你的页面变成一个组件,在其他任意地方(页面/组件/...)使用函数调用,而不需要navigateTo..
发布于 4 年前 作者 jing30 791 次浏览 来自 分享
/* 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
回到顶部