百度小程序-左侧滑动列表,点击分类右侧显示对应数据

.swan

 1 <view class="page">
 2     <!-- 左边S -->
 3     <view class="page-left" style="height:{{scrollH}}px">
 4         <scroll-view scroll-y="true" class="List" style="height:{{scrollH}}px" scroll-top="{= scrollTop =}">
 5             <block s-for="item,index in goodsClassName">
 6                 <view data-index="{{index}}" data-name="{{item.name}}"
 7                     class="List-item {{activeIndex == index ? 'List-item-on' : ' '}}" bindtap="tabClick">{{item.title}}
 8                 </view>
 9             </block>
10         </scroll-view>
11     </view>
12     <!-- 左边E -->
13     <!-- 右边S -->
14     <view class="page-right" style="height:{{scrollH}}px">
15             <scroll-view scroll-y="true" class="content-item" style="height:{{scrollH}}px" bindscrolltolower="bindscrolltolower">
16             <view class="page__bd" style="overflow:hidden;">
17                 <block s-for="item,index in DataInfo">
18                     <view class="goods-item">
19                     <navigator  url="/pages/detail/detail?id={{item.id}}">
20                         <view class="goods-item-img"><image src="{{item.cover_id}}" mode="widthFix" lazy-load="true" ></image></view>
21                         <view class="goods-item-title"><text>{{item.title}}</text></view>
22                     </navigator>
23                     </view>
24                 </block>
25             </view>
26             <!-- 数据加载模态框 S-->
27             <view class="page__bd" style="margin-top:30rpx;">
28                 <view class="weui-loadmore" hidden="{{!falg}}">
29                     <view class="weui-loading"></view>
30                     <view class="weui-loadmore__tips">正在加载</view>
31                 </view>
32                 <view class="weui-loadmore weui-loadmore_line" hidden="{{falg}}">
33                     <view class="weui-loadmore__tips weui-loadmore__tips_in-line">暂无数据</view>
34                 </view>
35             </view>
36             <!-- 数据加载模态框 E-->
37             </scroll-view>
38     </view>
39     <!-- 右边E -->
40 </view>

.css 为什么要设置 fixed ,不固定 上下滑动时就会 出现空白区域

 1 .page{width:100%;background:#eee;height:100vh;overflow:hidden;position:fixed;left:0;bottom:0}
 2 .page-left{width:25%;float:left;background-color:#f3f3f3;height:100vh;overflow:hidden}
 3 .List-item{padding:34rpx 10rpx;text-align:center;color:#7f7f7f;font-size:24rpx;font-weight:normal;font-stretch:normal;letter-spacing:0rpx;box-sizing:border-box}
 4 .List-item-on{color:#323232;background-color:#ffffff;box-shadow:0rpx 0rpx 1rpx 0rpx rgba(39,39,39,0.15);position:relative}
 5 .List-item-on::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:6rpx;height:53rpx;background-color:#b1742a}
 6 .page-right{width:75%;float:left;height:100vh;background:#fff;overflow:hidden}
 7 .content-item{width:100%;overflow:hidden;padding:8px;box-sizing:border-box}
 8 .goods-item{width:100%;background-color:#ffffff;box-shadow:0rpx 0rpx 6rpx 0rpx rgba(39,39,39,0.22);overflow:hidden;margin:0 2% 2% 0}
 9 .goods-item:nth-of-type(2n){margin-right:0}
10 .goods-item-img{width:100%;overflow:hidden}
11 .goods-item-img image{width:100%;display:block}
12 .goods-item-title{width:100%;height:50px;line-height:50px}
13 .goods-item-title text{text-align:center;font-size:24rpx;font-weight:normal;font-stretch:normal;letter-spacing:0rpx;color:#515151;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;padding:0 20rpx 30rpx 20rpx}

.js

  1 const app = getApp();
  2 Page({
  3     data: {
  4         goodsClassName: [],
  5         activeIndex: 0,
  6         scrollH: 0,
  7         scrollTop: 0,
  8         DataInfo: [],
  9         ClassName: "",
 10         falg: true,
 11         PageN: 1,
 12     },
 13     onLoad: function() {
 14         this.getClass();
 15         swan.getSystemInfo({
 16             success: (res) = >{
 17                 let ww = res.windowWidth;
 18                 let wh = res.windowHeight;
 19                 let scrollH = wh;
 20                 this.setData({
 21                     scrollH: scrollH,
 22                 })
 23             }
 24         })
 25     },
 26     tabClick: function(e) {
 27         console.log(e);
 28         this.setData({
 29             scrollTop: e.target.offsetTop,
 30             activeIndex: e.currentTarget.dataset.index,
 31             ClassName: e.currentTarget.dataset.name,
 32             DataInfo: [],
 33             PageN: 1,
 34             falg: true,
 35         });
 36         this.getInfo(this.data.ClassName);
 37         console.log('切换之后' + this.data.PageN)
 38     },
 39     onReady: function() {},
 40     onShow: function() {
 41         app.setInfo()
 42     },
 43     onHide: function() {},
 44     onUnload: function() {},
 45     onPullDownRefresh: function() {},
 46     onReachBottom: function() {},
 47     onShareAppMessage: function() {},
 48     bindscrolltolower: function() {
 49         this.getInfo(this.data.ClassName)
 50     },
 51     getClass: function() {
 52         var that = this;
 53         var index = this.data.activeIndex;
 54         swan.request({
 55             url: app.globalData.baseUrl + 'list/product',
 56             method: 'GET',
 57             data: {},
 58             header: {
 59                 genToken: app.globalData.genToken,
 60             },
 61             success: function(res) {
 62                 console.log(res);
 63                 if (res.data) {
 64                     swan.hideToast();
 65                     that.setData({
 66                         goodsClassName: res.data.cates,
 67                     })
 68                 }
 69                 console.log(that.data.goodsClassName);
 70                 console.log(that.data.goodsClassName[index].name);
 71                 that.setData({
 72                     ClassName: that.data.goodsClassName[index].name
 73                 }) that.getInfo(that.data.ClassName)
 74             },
 75             fail: function(err) {
 76                 console.log('错误码:' + err.errCode);
 77                 console.log('错误信息:' + err.errMsg)
 78             }
 79         })
 80     },
 81     getInfo: function(ClassName) {
 82         if (this.data.falg) {
 83             var that = this;
 84             swan.showToast({
 85                 title: '数据加载中',
 86                 icon: 'loading',
 87                 duration: 5000,
 88             });
 89             swan.request({
 90                 url: app.globalData.baseUrl + 'list/' + ClassName,
 91                 method: 'GET',
 92                 data: {
 93                     p: that.data.PageN
 94                 },
 95                 header: {
 96                     genToken: app.globalData.genToken
 97                 },
 98                 success: function(res) {
 99                     console.log(res);
100                     swan.hideToast();
101                     if (res.data.lines.length < 1) {
102                         swan.showToast({
103                             title: '已全部加载!',
104                             icon: 'none',
105                             duration: 1000,
106                         });
107                         that.setData({
108                             falg: false
109                         })
110                     } else {
111                         let arr = res.data.lines;
112                         that.setData({
113                             DataInfo: that.data.DataInfo.concat(arr),
114                             falg: true
115                         })
116                     };
117                     if (res.data.lines.length < 6) {
118                         that.setData({
119                             falg: false
120                         })
121                     }
122                 },
123                 fail: function(err) {
124                     swan.showToast({
125                         title: '网络好像出问题了!',
126                         icon: 'loading',
127                         duration: 3000,
128                     });
129                     console.log('错误码:' + err.errCode);
130                     console.log('错误信息:' + err.errMsg)
131                 },
132                 complete: function() {
133                     that.setData({
134                         PageN: that.data.PageN + 1,
135                     });
136                     console.log('当前页码' + that.data.PageN)
137                 }
138             })
139         } else {
140             swan.showToast({
141                 title: '已全部加载!',
142                 icon: 'none',
143                 duration: 1000,
144             })
145         }
146     },
147 });

效果图

posted @ 2019-06-27 16:19  suni1024  阅读(1652)  评论(0编辑  收藏  举报