// 第一种:地址栏 ? 后面传值,在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拿到传参。
注意:在跳转到详情页时,也可以将这个商品的详细信息传过去,但是如果是秒杀的活动,一秒钟后可能这个商品已经没有了,等到打开详情页的时候还是在列表页的数据,所以这种方法不严谨。