实现查询功能先在index.wxml中加入<input>标签并给<input>绑定一个事件,
然后针对事件编码就可以了。我们先在index.wxml文件中加入<input>标签 (见红色字体的代码):
1 <view class="container">
2
3 <view> 4 <input class="input1" type="text" placeholder="请输入商品名称"
confirm-type="search" bindconfirm="bindSearch" bindblur="searchBlue"></input> 5 </view>
6
7 <view class="list1" wx:for="{{productList}}" wx:key="produceId">
8 <view>
9 <image class="image1" src="{{item.imageUrl}}"></image>
10 </view>
11 <view class="detail1">
12 <text>{{index}} {{item.productName}}</text>
13 <text>{{item.price}}</text>
14 <text>{{item.originalPrice}}</text>
15 </view>
16 </view>
17
18
19 </view>
1 . class="input1" 设置样式 , input1在index.wxss中定义:
1 .input1 2 { 3 width:600rpx; 4 height: 60rpx; 5 border-radius: 30rpx; 6 background-color: #e0e0e0; 7 padding-left: 30rpx; 8 }
width:600rpx; 输入框的宽度,height: 60rpx; 输入框高度,background-color: #e0e0e0;输入框背景色,
border-radius: 30rpx;输入框以圆角显示,这个值设置成height值的一半就是圆角的效果,
padding-left: 30rpx; 文字离左边框的距离, 和border-radius的值保持一致会比较美观。
2 . placeholder="请输入商品名称" , 输入框的提示信息,如下图 :
3 . confirm-type="search" 用来设置当用户在输入框输入文字时,
键盘右下角的按钮显示什么文字, search表示搜索,如下图 :
其他可选的值如下表 :
4 . bindconfirm="bindSearch" 表示用户点键盘上的“搜索”按钮时要执行的函数,
稍后我们将在index.js中加入名称为“bindSearch”的函数并编码来完成搜索的执行逻辑。
5 . bindblur="searchBlue" 表示输入框失去焦点时要执行的函数,这个函数的作用是将用户
输入的值赋给data:{ searchWords:"" }属性中定义的searchWords变量,
这样在index.js文件中其他地方就可以直接使用这个变量的值了。
<input>标签的详细信息可以参考官方文档 :
https://developers.weixin.qq.com/miniprogram/dev/component/input.html
index.js中的代码实现:
1 data: { 2 productList: [], 3 pageIndex:1, 4 searchWords:""
5 }, 6
7 searchBlur:function(e) 8 { 9 this.setData({ 10 searchWords: e.detail.value 11 }) 12 }, 13 bindSearch: function (options) { 14 this.initProductList(); 15 },
1 . 我们在data属性中定义一个存储用户输入的变量 searchWords:""。
2 . searchBlur:function(e){ } 函数在输入框失去焦点时触发,
此函数的作用是将输入框的值通过setData( )函数设置到searchWords变量中供其他地方调用。
3 . bindSearch: function (options) { }函数用来响应用户的查询操作,
当用户输入完成点右下角的搜索按钮后触发该函数,
此函数只是简单的调用了initProductList();函数用来向服务器抓取数据并在页面显示出来,
为了抓取数据时将用户输入的查询条件传过去,我们需要对initProductList();函数做少许修改如下 :
1 initProductList:function() 2 { 3 var _this=this; 4 wx.request({ 5 url: 'http://www.tm.com/webapi/products', 6 data:{'words':this.data.searchWords}, 7 method:'GET', 8 success:function(res){ 9 //var products=res.data;
10 var products=[ 11 {'productId':111,'productName':'女装T恤简洁11','price':12.9,'originalPrice':22.9,'imageUrl':'../../images/product11.jpg'}, 12 {'productId':122,'productName':'女装T恤简洁22','price':15.9,'originalPrice':25.9,'imageUrl':'../../images/product22.jpg'}, 13 {'productId':133,'productName':'女装T恤简洁33','price':18.9,'originalPrice':38.9,'imageUrl':'../../images/product33.jpg'}, 14 {'productId':144,'productName':'女装T恤简洁44','price':18.9,'originalPrice':38.9,'imageUrl':'../../images/product44.jpg'} 15 ]; 16 _this.setData({productList:products}); 17 } 18 }) 19 },
相比较原来的initProductList();函数,这里仅仅加入了'searchWords':this.data.searchWords 这一行代码,
其作用是将searchBlur:function(e){ }函数体中赋值给searchWords的值抓出来,然后赋值给查询字符串变量words ,
用URL的形式传递到服务器端, 服务器端需要用Request.QueryString["words"]接收这个值,
当然有了这个值还需要传递给SQL语句做where条件,这部分就属于服务器端的编码了。
至此, 我们已将首页的基本功能都实现了, 包括显示首页商品清单,查询商品,下拉刷新,上拉分页加载商品信息等。
接下来我们介绍首页的余下几个功能:
1 . 将商品加入到购物车 ;
2 . 点击商品图片打开详情页;
3 . 详情页可以分享商品信息给朋友或发到朋友圈;