// 第一种:地址栏 ? 后面传值,在detail.js中onLoad生命周期中接收参数 toDetail(e){ var id=10, title="我是详情页"; wx.navigateTo({ url: '/pages/detail/detail?id=' + id + '&title=' + title, }) } // detail.js onLoad: function (options) { console.log(options) },
// 第二种:在app.js中,定义globalData对象,这是全局的 App({ globalData:{ // 这里面写的参数在任何页面都能拿到 name:"吴小明" } }) // detail.js定义常量接收app.js const app = getApp(); // 在onLoad、onReady、onShow生命周期中可以拿到app Page({ onLoad(){ console.log(app) this.setName() }, onReady(){ console.log(app) }, onShow(){ console.log(app) }, setName(){ // 如果需要,可以在这里重新设置app.globalData.name的值 var self=this; self.setData({ name:app.globalData.name }) } })
// 第三种方式:利用本地缓存,这种方式最常用。 // wx.setStorageSync("title","111111111")设置值,在需要的页面通过wx.getStorageSync("title")
// 第四种方式:通过 data-xxx 将值传过去 <view bindtap="goDetail" data-productId="{{item._id}}"></view> 把该商品的id传过去,到了详情页再由这个id去请求到相应的数据。 在详情页通过事件对象event拿到传参。 注意:在跳转到详情页时,也可以将这个商品的详细信息传过去,但是如果是秒杀的活动,一秒钟后可能这个商品已经没有了,等到打开详情页的时候还是在列表页的数据,所以这种方法不严谨。