商品列表页点击商品图片时可以查看商品详情,我们先在pages/index这个文件夹下增加一个page,
名称叫productDetail, 建好后index文件夹下的文件结构是这样的:
然后我们修改index.wxml这个文件, 在<image>这个控件上加上tap事件,代码如下 :
1 <view> 2 <image class="image1" src="{{item.imageUrl}}" 3 data-productId="{{item.productId}}" bindtap="tapDetail"></image> 4 </view>
bindtap="tapDetail"是点击图片时要执行的函数,
data-productId="{{item.productId}}" 是传递给函数的参数,参数名称为productId
data-productId="{{item.productId}}" 是传递给函数的参数,参数名称为productId
在index.wxml文件加上事件代码就可以了,如下:
1 tapDetail: function (options) { 2 let productId = options.currentTarget.dataset.productid; 3 4 wx.navigateTo({ 5 url: \'../index/productDetail?productid=\'+ productId, 6 }) 7 },
这个函数很简单, 先用let productId = options.currentTarget.dataset.productId;获取页面传递过来的productId ,
然后调用小程序提供的页面跳转函数 wx.navigateTo(), 传入页面名称和参数就可以了。
接下来我们完善productDetail.wxml这个页面。
1 <view class="container"> 2 <image class="image1" src="{{product.imageUrl}}"></image> 3 <text>{{product.productName}}</text> 4 <text>{{product.price}}</text> 5 <text>{{product.originalPrice}}</text> 6 </view>
productDetail.js中的代码如下 :
1 data: { 2 product:{} //定义一个对象用于传值到productDetail.wxml页面, 用来显示商品信息 3 }, 4 5 initProduct:function(productId) 6 { 7 console.log("productId:"+productId); //调试打印语句 8 var _this=this; 9 wx.request({ //调用API从服务器上获取当前product信息 10 url: \'http://www.tm.com/webapi/product\', 11 data:{\'productId\':productId}, 12 method:\'GET\', 13 success:function(res){ 14 //var productObj=res.data; 15 var productObj={
16 \'productId\':111,\'productName\':\'女装T恤简洁11\',\'price\':12.9,\'originalPrice\':22.9,\'imageUrl\':\'../../images/product11.jpg\', 17 \'inShoppingCart\':0,\'productQty\':11}; 18 19 _this.setData({product:productObj}); //从服务器上获取的productObj值通过setData()函数设置到页面上显示出来。 20 } 21 }) 22 }, 23 24 25 /** 26 * 生命周期函数--监听页面加载 27 */ 28 onLoad: function (options) { 29 let productId = options.productid; //接收上一个页面传递过来的参数 30 console.log(productId); //打印输出,调试用。 31 this.initProduct(productId); 调用函数用来初始化产品信息。 32 },