微信小程序商城项目实战(第三篇:商品列表)

实现商品列表

利用组件实现…

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;
}

组件js(属性、方法)

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>

JS方法编写

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 () {

    }
})

效果图

刚进来时…
在这里插入图片描述
滑到底部时
在这里插入图片描述
没数据时:
在这里插入图片描述
下拉刷新:
在这里插入图片描述

成功实现~

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot 是一个用于构建独立的、可扩展的、基于Java的应用程序的框架。微信小程序是一种基于微信平台的轻量级应用程序。通过结合Spring Boot 和微信小程序开发实战,可以创建出功能丰富、灵活可扩展的小程序。 首先,可以使用Spring Boot 提供的便利性和高效性来创建一个后端服务。通过Spring Boot 的自动配置和快速开发特性,可以快速搭建一个高度可扩展的后端服务,支持实现用户登录验证、数据存储和访问等功能。 其次,可以利用微信小程序提供的各种API和功能来实现与用户的交互。可以使用微信小程序的界面组件和模板来构建用户界面,支持用户与小程序进行交互。同时,通过调用微信提供的API,可以实现用户登录、用户位置获取、支付等功能。 此外,通过Spring Boot 和微信小程序的结合,可以实现数据的实时同步和共享。可以通过后端服务将数据存储到数据库中,并通过微信小程序将数据展示给用户。同时,通过微信小程序提供的数据上报和反馈功能,可以将用户的操作数据实时传输到后端服务,并进行相应的处理。 最后,利用Spring Boot 和微信小程序开发实战,可以进行持续的迭代和优化。通过使用Spring Boot 提供的测试框架和集成开发环境,可以快速进行开发和测试。同时,通过微信小程序提供的发布和更新功能,可以实现小程序的持续改进和功能优化。 综上所述,通过Spring Boot 和微信小程序开发实战,可以创建出高效、灵活、功能强大的小程序,为用户提供良好的使用体验。同时,可以借助Spring Boot 和微信小程序提供的开发工具和功能,实现快速开发、持续迭代和优化的开发流程。 ### 回答2: Spring Boot是一种用于构建Java应用程序的开源框架。微信小程序是一种可以在微信中运行的小型应用程序。结合Spring Boot和微信小程序可以进行微信小程序开发实战。 在使用Spring Boot开发微信小程序时,我们可以使用Spring Boot的各种特性和功能来加快开发速度和简化开发过程。首先,我们可以使用Spring Boot的自动配置功能来快速配置和集成微信小程序的相关组件和功能。例如,我们可以使用Spring Boot的自动配置来集成微信小程序的授权登录和用户信息获取功能,这样我们就可以快速实现用户登录和权限控制。 其次,Spring Boot有良好的开发文档和社区支持,我们可以通过查阅文档和参与社区讨论来解决开发过程中的问题和困惑。同时,Spring Boot也有丰富的第三方库和插件,我们可以借助这些工具来实现更复杂的功能和性能优化。 此外,Spring Boot还提供了方便的测试工具和环境,我们可以通过单元测试和集成测试来确保微信小程序的稳定性和质量。通过使用Spring Boot的测试工具,我们可以快速编写和运行各种类型的测试,例如接口测试、性能测试和压力测试等。 最后,Spring Boot具有良好的扩展性和可维护性,我们可以使用Spring Boot的模块化和组件化特性来管理和维护微信小程序的代码和资源。同时,Spring Boot也支持容器化部署,我们可以使用Docker等工具将微信小程序打包为容器镜像,并通过云平台实现自动化的部署和运维。 综上所述,使用Spring Boot进行微信小程序开发实战可以提高开发效率、简化开发过程、保证应用质量,并且具备良好的扩展性和可维护性。这些优点使得Spring Boot成为一种非常适合用于微信小程序开发的框架。 ### 回答3: Spring Boot 是一个开源的Java开发框架,它简化了Java应用程序的配置和部署过程。微信小程序是一种用于开发在微信平台上运行的小程序的框架。在开发微信小程序时,使用Spring Boot可以提供更高效、更简洁的开发方式。 首先,Spring Boot提供了丰富的功能和插件,可以帮助开发者快速搭建微信小程序的后端服务。通过使用Spring Boot的自动配置功能,可以省去繁琐的配置过程,并且可以轻松地集成其他常用的框架和组件,如数据库访问、缓存、消息队列等。 其次,Spring Boot提供了灵活的开发方式,可以根据具体需求选择使用Java、Kotlin或者Groovy等不同的开发语言。开发者可以根据自己的技术栈和喜好进行选择,提高开发效率。 另外,Spring Boot还提供了丰富的文档和社区支持,开发者可以轻松地学习和解决问题。通过参与Spring Boot社区,可以与其他开发者进行交流和分享经验,使开发过程更加顺利。 总结来说,Spring Boot在微信小程序开发中可以提供快速搭建后端服务、灵活的开发方式和丰富的文档和社区支持等优势。使用Spring Boot开发微信小程序,可以提高开发效率,减少不必要的工作量,让开发者能够更专注于业务逻辑的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值