微信小程序商城开发之动态API实现商品的详情页示例
创始人
2024-11-23 21:41:43
0次
看效果

微信小程序商城开发之动态API实现商品的详情页示例

开发计划

1、实现商品详情页面布局(这篇实现3个模块,头部商品图片轮播、商品价格和商品描述、商品详情展示)
2、根据用户点击不同的商品请求API动态加载数据

根据商品ID获取商品详情API数据模型

访问:https://100boot.cn/ 选择微商城案例,如下图所示:

微信小程序商城开发之动态API实现商品的详情页示例

下方还有详细的数据模型可以查看哦!

home.js 增加跳转商品详情事件

上一篇还记得我们做了商品点击查看详情的事件采集吗?那么再加上跳转商品详情页功能,如下图所示:

微信小程序商城开发之动态API实现商品的详情页示例

detail.wxml

  
    
      
    
  
    {{goods.title}}  
  
      
        ¥{{goods.price}}

           原价¥{{goods.privilegePrice}}

        
             商品详情                             
detail.wxss
page {  
    display: flex;  
    flex-direction: column;  
    height: 100%;
}
/* 直接设置swiper属性 */

swiper {  
    /* height: 500rpx; */
    height: 750rpx;
}
swiper-item image {  
    width: 100%;  
    height: 100%;
}
/**商品价格**/
.product-price-wrap{      
    display: flex;  
    justify-content:space-between;/**两边对齐**/
    flex-direction: row;  
    flex-wrap: wrap;  
    margin:5px 5px;   /* border:1rpx solid red;   */
} 
.product-price-wrap .product-price-new{  
    color: red;  
    font-size: 40rpx;  
    margin: 10rpx;
}
.product-price-wrap .product-price-old{  
    color: #888;  
    text-decoration: line-through;  
    padding-left: 5px;  
    font-size: 12px;  
    line-height:30px;  
    font-weight:300;
}
.product-name-wrap{  
    margin: 0px 10px;    
    font-size: 14px;    
    color: #404040;
}
.details{   
    padding: 0 5px 0 5px; 
}
.detail {  
    display: flex;  
    flex-direction: column;  
    margin-top: 15rpx;  
    margin-bottom: 0rpx;
  
}
.detail .title {  
    font-size: 40rpx;  
    margin: 10rpx;  
    color: black;  
    text-align: justify;  
    height: 100rpx;
}
.detail .price {  
    color: red;  
    font-size: 40rpx;  
    margin: 10rpx;
}
.line_flag {  
    width: 80rpx;  
    height: 1rpx;  
    display: inline-block;  
    margin: 20rpx auto;  
    background-color: gainsboro;  
    text-align: center;
}
.line {  
    width: 100%;  
    height: 2rpx;  
    display: inline-block;  
    margin: 20rpx 0rpx;  
    background-color: gainsboro;  
    text-align: center;
}
.detail-nav {  
    display: flex;  
    flex-direction: row;  
    align-items: center;  
    float: left;  
    background-color: #fff;  
    position: fixed;  
    bottom: 0;  
    right: 0;  
    z-index: 1;  
    width: 100%;  
    height: 100rpx;
}
.button-green {  
    background-color: #4caf50; /* Green */
}
.button-red {  
    background-color: #f44336; /* 红色 */
}
.button-addCar {  
    background-color: #f44336; /* 红色 */
    width: 100%;
}
.image_detail {  
    width: 100%;  /* height: 750rpx; */
}
.detail-nav image {  
    width: 70rpx;  
    height: 50rpx;  
    margin: 20rpx 40rpx;
}
.line_nav {  
    width: 5rpx;  
    height: 100%;  
    background-color: gainsboro;
}
/* 占位 */
.temp {  
    height: 100rpx;
}
detail.js
const ajax = require('../../utils/ajax.js');
const utils = require('../../utils/util.js');
var imgUrls = [];  var detailImg = [];
var goodsId = null;
var goods = null;
Page({  /**
   * 页面的初始数据
   */
  data: {    
    isLike: true,    
    showDialog: false,    
    goods:null,    
    indicatorDots: true, //是否显示面板指示点
    autoplay: true, //是否自动切换
    interval: 3000, //自动切换时间间隔,3s
    duration: 1000, //  滑动动画时长1s
  },  //预览图片
  previewImage: function (e) {    
    var current = e.target.dataset.src;
    wx.previewImage({      
        current: current, // 当前显示图片的http链接  
        urls: this.data.imgUrls // 需要预览的图片http链接列表  
    })
  }, 
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {    
    var that = this;
    goodsId = options.goodsId;    
    console.log('goodsId:' + goodsId);    //加载商品详情
    that.goodsInfoShow();
  },  
goodsInfoShow: function (success) {    
    var that = this;
    ajax.request({      
    method: 'GET',      
    url: 'goods/getGoodsInfo?key=' + utils.key+'&goodsId=' + goodsId,      
    success: data => {        
        var goodsItem = data.result;        
        for (var i = 0; i < goodsItem.shopGoodsImageList.length; i++) {  
          imgUrls[i] = goodsItem.shopGoodsImageList[i].imgUrl;  
        }        
        var details = goodsItem.details.split(";");        
        for (var j = 0; j < details.length; j++) { 
          detailImg[j] = details[j];
        }
        goods = {          
            imgUrls: imgUrls,          
            title: goodsItem.name,          
            price: goodsItem.price,          
            privilegePrice: goodsItem.privilegePrice,          
            detailImg: detailImg,          
            imgUrl: goodsItem.imgUrl,          
            buyRate: goodsItem.buyRate,          
            goodsId: goodsId,          
            count:1,          
            totalMoney: goodsItem.price,
        }
        
        that.setData({          
            goods : goods
        })        
        console.log(goods.title)
      }
    })
  },
})

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...