溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

微信小程序商城開發(fā)之動態(tài)API實現(xiàn)特賣商品流式布局的示例

發(fā)布時間:2021-02-03 10:37:26 來源:億速云 閱讀:179 作者:小新 欄目:移動開發(fā)

這篇文章主要介紹了微信小程序商城開發(fā)之動態(tài)API實現(xiàn)特賣商品流式布局的示例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

看效果

微信小程序商城開發(fā)之動態(tài)API實現(xiàn)特賣商品流式布局的示例

開發(fā)計劃

1、新品特賣商品列表布局
2、調(diào)用動態(tài)API獲取數(shù)據(jù)并加載
3、點擊商品跳轉(zhuǎn)商品詳情

根據(jù)商品ID獲取商品詳情API數(shù)據(jù)模型

訪問:https://100boot.cn/ 選擇微商城案例,如下圖所示:

微信小程序商城開發(fā)之動態(tài)API實現(xiàn)特賣商品流式布局的示例

下方還有詳細的數(shù)據(jù)模型可以查看哦!

brand.wxml
<scroll-view scroll-y="true" style="height:{{scrollH}}px" bindscrolltolower="brandShow">
  <view class="goods" style="width:100%">
    <view class="mg_item">
      <view wx:for="{{col1}}" wx:key="id">
      <view class="item_info" catchtap="catchTapCategory" data-goodsid="{{item.id}}">
        <image src="{{item.imgUrl}}" style="width:100%;height:{{item.height}}px"></image>
      </view>
            <view class="product-name">
              {{item.name}}            </view>
            <view class="product-price-wrap">
              <p class="product-price-new">¥{{item.price}}</p>  
              <p class="product-price-old">¥{{item.privilegePrice}}</p> 
               <p class="discount">{{item.discount}}折</p>   
            </view>
      </view>
    </view>
    <view class="mg_item">
      <view wx:for="{{col2}}" wx:key="id" >
      <view class="item_info" catchtap="catchTapCategory" data-goodsid="{{item.id}}">
        <image src="{{item.imgUrl}}" style="width:100%;height:{{item.height}}px"></image>
      </view>
            <view class="product-name">
              {{item.name}}            </view>
            <view class="product-price-wrap">
              <p class="product-price-new">¥{{item.price}}</p>  
              <p class="product-price-old">¥{{item.privilegePrice}}</p> 
               <p class="discount">{{item.discount}}折</p>   
            </view>
      </view>
    </view>
  </view></scroll-view>

 <view style="display:none">
  <image wx:for="{{brandGoods}}" wx:key="id" id="{{item.id}}" src="{{item.imgUrl}}" bindload="onImageLoad1"></image></view> 

  <view class="weui-loadmore" hidden="{{hidden}}">
    <view class="weui-loading"></view>
    <view class="weui-loadmore__tips">努力加載中</view>
  </view>
brand.wxss
page{  
  height: 100%;  
  background-color: #F3F4F6;
} 
/* 單個圖片容器的樣式 */
.img_item {  
    width: 48.5%;  
    margin: 2px;  
    display: inline-block;  
    vertical-align: top;  
    background-color: #ffffff;  
    font-size: 24rpx;
}
.item_info{   
    border-top:5px solid #F3F4F6; 
}
.product-name{  
    color: #000;  /* height: 28px; */
    text-align:left;   margin: 0px 5px; 
    margin-bottom: 5px; 
}
.product-price-wrap .product-price-new{  
    color: #e80080;  
    margin-left:5px;  
    font-weight:900;
}
.product-price-wrap .product-price-old{  
    color: #888;  
    text-decoration: line-through;  
    padding-left: 2px;
}
.product-price-wrap .discount{  
    margin-left: 30px;  
    background-color: #000;  
    color: #fff;
}
/*  加載更多   */

.weui-loading {  
    margin: 0 5px;  
    width: 20px;  
    height: 20px;  
    display: inline-block;      
    vertical-align: middle;  
    -webkit-animation: weuiLoading 1s steps(12, end) infinite;  
    animation: weuiLoading 1s steps(12, end) infinite;  
    background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;  
    background-size: 100%;
}
.weui-loadmore {  
    width: 65%;  
    margin: 1.5em auto;  
    line-height: 1.6em;  
    font-size: 12px;  
    text-align: center;
}
.weui-loadmore__tips {  
    display: inline-block;  
    vertical-align: middle;  
    color: #888;
}
brand.js
const ajax = require('../../utils/ajax.js');
const utils = require('../../utils/util.js');
var sectionData = [];
var ifLoadMore = null;
var activityId = null;
var page = 1;//默認第一頁

Page({  
    data: {    
        scrollH: 0,    
        imgWidth: 0,    
        loadingCount: 0,    
        images: [],    
        col1: [],    
        col2: []
  },  
    onLoad: function (options) {
    activityId = options.activityId;
    page = 1;   
    console.log('activityId:' + activityId);
    wx.getSystemInfo({      
    success: (res) => {        
    let ww = res.windowWidth;        
    let wh = res.windowHeight;        
    let imgWidth = ww * 0.48;        
    let scrollH = wh;        
    this.setData({          
    scrollH: scrollH,          
    imgWidth: imgWidth
        });        
        //加載首組圖片
        // this.loadImages();
        this.brandShow();
      }
    })
  },  
onImageLoad1: function (e) {    
     let imageId = e.currentTarget.id;    
     let oImgW = e.detail.width;         //圖片原始寬度
    let oImgH = e.detail.height;        //圖片原始高度
    let imgWidth = this.data.imgWidth;  //圖片設(shè)置的寬度
    let scale = imgWidth / oImgW;        //比例計算
    let imgHeight = oImgH * scale;      //自適應(yīng)高度

    let images = this.data.brandGoods;    
     let imageObj = null;    
     for (let i = 0; i < images.length; i++) {      
     let img = images[i];      
     if (img.id+"" === imageId) {
        imageObj = img;        
         break;
      }
    }

    imageObj.height = imgHeight;    
    let loadingCount = this.data.loadingCount - 1;    
    let col1 = this.data.col1;    
    let col2 = this.data.col2;    //判斷當(dāng)前圖片添加到左列還是右列
    if (col1.length <= col2.length) {
      col1.push(imageObj);
    } else {
      col2.push(imageObj);
    }    
    let data = {      
        loadingCount: loadingCount,      
        col1: col1,      
        col2: col2
    };    
    //當(dāng)前這組圖片已加載完畢,則清空圖片臨時加載區(qū)域的內(nèi)容
    if (!loadingCount) {
      data.images = [];
    }    
    this.setData(data);
  },  
    brandShow: function (success) {    
        var that = this;    
        console.log(page)
        ajax.request({      
        method: 'GET',      
        url: 'goods/getActivityGoodsList?key=' + utils.key + '&activityId=' + activityId+'&page=' + page + '&size=10',      
        success: data => {        
        var newGoodsData = data.result.list;
        page += 1;        
        if (ifLoadMore) {          //加載更多
          if (newGoodsData.length > 0) {            
            console.log(newGoodsData)
            sectionData['brandGoods'] = newGoodsData;
          } else {
            ifLoadMore = false;            
            this.setData({              
                hidden: true
            })
            
            wx.showToast({              
                title: '暫無更多內(nèi)容!',              
                icon: 'loading',              
                duration: 2000
            })
          }

        } else {          
            if (ifLoadMore == null) {
            ifLoadMore = true;
            sectionData['brandGoods'] = newGoodsData;//刷新
          }
        }
        that.setData({          
            brandGoods: sectionData['brandGoods'],          
            loadingCount: sectionData['brandGoods'].length,
        });        
            console.log(that.data.brandGoods)
        wx.stopPullDownRefresh();//結(jié)束動畫
      }
    })
  },  
catchTapCategory: function (e) {    
     var that = this;    
     var goodsId = e.currentTarget.dataset.goodsid;    
     console.log('goodsId:' + goodsId);    //新增商品用戶點擊數(shù)量
    that.goodsClickShow(goodsId);    //跳轉(zhuǎn)商品詳情
    wx.navigateTo({ url: '../detail/detail?goodsId=' + goodsId    })
  },
  goodsClickShow(goodsId) {    
     console.log('增加商品用戶點擊數(shù)量');    var that = this;
    ajax.request({      
     method: 'GET',      
     url: 'goods/addGoodsClickRate?key=' + utils.key + '&goodsId=' + goodsId,      
     success: data => {        
     console.log("用戶點擊統(tǒng)計返回結(jié)果:" + data.message)
      }
    })
  },
})

感謝你能夠認真閱讀完這篇文章,希望小編分享的“微信小程序商城開發(fā)之動態(tài)API實現(xiàn)特賣商品流式布局的示例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI