赞
踩
Tabs
- <view class="top">
- <view wx:for="{{tabList}}" wx:key="index" class="title {{index == curr ? 'active':''}}" bindtap="tapwhere" data-index="{{index}}">{{item}}</view>
- </view>
- <navigator class="goods" wx:for="{{GoodsList}}" wx:key="cat_id" url="/pages/goods_detail/goods_detail?goods_id={{item.goods_id}}">
- <view class="img">
-
- <image src="{{item.goods_small_logo==''?'https://ww1.sinaimg.cn/large/007rAy9hgy1g24by9t530j30i20i2glm.jpg':item.goods_small_logo}}" mode="widthFix" />
- </view>
- <view class="context">{{item.goods_name}}<view class="price">¥{{item.goods_price}}</view></view>
- </navigator>
- .top{
- display: flex;
- justify-content: center;
- }
- .top .title{
- display: flex;
- flex: auto;
- height: 100rpx;
- align-items: center;
- justify-content: center;
- border-bottom: #666666 solid 1rpx;
- }
- .top .active{
- color: var(--themeColor);
- border-bottom: var(--themeColor) solid 1rpx;
- }
- .goods{
- display: flex;
- height: 280rpx;
- border-bottom: #666666 solid 1rpx;
- }
- .goods .img{
- flex: 2;
- width: 60%;
- justify-content: center;
- }
- .goods .img image{
- transform: scale(0.8)
- }
- .goods .context{
- flex: 3;
- font-size: 30rpx;
- margin-top: 20rpx;
- }
- .goods .context .price{
- color: red;
- font-size: 40rpx;
- margin-top: 50rpx;
- }

tabList上方三个导航栏
GoodsList商品列表
curr:当前选中的导航栏下标…
- // components/Tabs.js
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- tabList:[],
- GoodsList:[],
- curr:0
- },
-
- /**
- * 组件的初始数据
- */
- data: {
- },
-
- /**
- * 组件的方法列表
- */
- methods: {
- //处理选中的导航栏下标,实现下方红色边框跟随....
- tapwhere(e){
- this.triggerEvent('tapwhere',{
- index:e.target.dataset.index
- })
- }
- }
- })
-

引入搜索框和tab组件,并且允许下拉刷新…
- {
- "usingComponents": {
- "search-input":"../../components/SearchInput/SearchInput",
- "tab":"../../components/Tabs/Tabs"
- },
- "enablePullDownRefresh": true,
- "backgroundTextStyle": "dark",
- "navigationBarTitleText": "商品列表"
- }
引用的两个组件,给tab组件传参,传递数据…
- <view>
- <search-input></search-input>
- <tab tabList="{{tabList}}" curr="{{curr}}" GoodsList="{{GoodsList}}" bind:tapwhere="_where"></tab>
- </view>
data属性:
- tabList:导航栏的数据
- GoodsList:商品列表数据
- curr:当前选中的下标
- pagenum:当前页码
- pagetotal:总数据量
- cid 商品分类id(用于查询对应分类的id,由商品分类传递过来.)
方法:
- _where:用于传递选中的选项卡下标,返回给组件…
- getgoods:获取商品列表并且赋值给GoodsList
- 然后还有一个下拉刷新事件和上拉继续加载事件…
- import {request} from '../../utils/request'
- Page({
-
- /**
- * 页面的初始数据
- */
- data: {
- tabList:['综合','销量','价格'],
- GoodsList:[],
- curr:0,
- pagenum:1,
- pagetotal:0,
- cid:0
- },
- _where(e){
- this.setData({
- curr:e.detail.index
- })
- },
- async getgoods(opt){
- if(opt!=undefined){
- console.log('有数据');
- this.setData({
- cid:opt.cid
- })
- }
- let ret=await request('goods/search',{pagenum:this.data.pagenum,pagesize:10,cid:this.data.cid})
- if(this.data.GoodsList.length!=0){
- var good=this.data.GoodsList;
- }
- this.setData({
- GoodsList:ret.data.message.goods,
- pagetotal:ret.data.message.total
- });
- good=[...good,...this.data.GoodsList];
- this.setData({
- GoodsList:good,
- })
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- // console.log(options);
- this.getgoods(options)
- },
-
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
-
- },
-
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- this.data.GoodsList=[];
- this.data.pagenum=1;
- this.getgoods();
- },
-
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- if(this.data.pagenum===Math.ceil(this.data.pagetotal/10)){
- wx.showToast({
- title: '已经没有商品啦.....',
- icon: 'none',
- duration: 2000//持续的时间
- })
- }else{
- wx.showToast({
- title: '加载中...',
- icon: 'loading',
- duration: 800//持续的时间
- })
- this.data.pagenum++;
- this.getgoods();
- }
- },
-
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
-
- }
- })

刚进来时…
滑到底部时
没数据时:
下拉刷新:
成功实现~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。