微信小程序(黑马优购:商品列表)

1.渲染商品列表并美化布局

  <view class="goods-list"><block v-for="(goods,i) in goodsList" :key="i"><view class="goods-item"><!-- 左侧的盒子 --><view class="goods-item-left"><image :src="goods.goods_small_logo || defaultPic" class="goods-pic"></image></view><!-- 右侧的盒子 --><view class="goods-item-right"><!-- 商品的名字 --><view class="goods-name">{{goods.goods_name}}</view><view class="goods-info-box"><view class="goods-price">¥{{goods.goods_price}}</view></view></view></view></block></view>
export default {data() {return {//请求参数对象queryObj: {//查询关键词query: '',//商品分类idcid: '',//页码值pagenum: 1,//每页显示多少条数据pagesize: 10},goodsList: [],total: 0,defaultPic: 'https://img1.baidu.com/it/u=347909717,3772510335&fm=253&fmt=auto&app=138&f=JPEG?w=609&h=500'};},onLoad(options) {this.queryObj.query = options.query || ''this.queryObj.cid = options.cid || ''this.getGoodsList()},methods: {//获取商品列表数据的方法async getGoodsList(){const{data: res} = await  uni.$http.get('/api/public/v1/goods/search',this.queryObj)if(res.meta.status !== 200){return uni.$showMsg()}this.goodsList = res.message.goodsthis.total = res.message.total}}


.goods-item{display: flex;padding: 10px 5px;border-bottom: 1px solid #f0f0f0;.goods-item-left{margin-left: 5px;.goods-pic{width: 100px;height: 100px;display: block;}}.goods-item-right{display: flex;flex-direction: column;justify-content: space-between;.goods-name{font-size: 13px;}.goods-info-box{.goods-price{color: #C00000;font-size: 16px;}}}

2.封装商品列表

   <view class="goods-list"><view v-for="(goods, i) in goodsList" :key="i" @click="gotoDetail(goods)"><my-goods :goods="goods"></my-goods></view></view>

<view class="goods-item"><!-- 左侧的盒子 --><view class="goods-item-left"><image :src="goods.goods_small_logo || defaultPic" class="goods-pic"></image></view><!-- 右侧的盒子 --><view class="goods-item-right"><!-- 商品的名字 --><view class="goods-name">{{goods.goods_name}}</view><view class="goods-info-box"><view class="goods-price">¥{{goods.goods_price | tofixed}}</view></view></view></view>

<script>export default {props: {goods: {type: Object,default: {}}},data() {return {// 默认的图片defaultPic: 'https://img0.baidu.com/it/u=596425167,3189264920&fm=253&fmt=auto&app=138&f=JPEG?w=361&h=500'};}}
</script>

3.过滤器处理商品价格

 <view class="goods-info-box"><view class="goods-price">¥{{goods.goods_price | tofixed}}</view></view>
filters: {tofixed(num) {//保留两位小数return  Number(num).toFixed(2)}}

4.上拉加载更多

pages.json

{"path" : "goods_list/goods_list","style" : {//上拉触底"onReachBottomDistance": 150}},
async getGoodsList(cb) {const { data: res } = await uni.$http.get('/api/public/v1/goods/search', this.queryObj)if (res.meta.status !== 200) return uni.$showMsg()//拼接数据this.goodsList = [...this.goodsList, ...res.message.goods]this.total = res.message.total},onReachBottom() {if (this.queryObj.pagenum * this.queryObj.pagesize >= this.total) return uni.$showMsg('数据加载完毕!')// 让页码值自增+1this.queryObj.pagenum++this.getGoodsList()},

5.节流阀

 async getGoodsList(cb) {// 打开节流阀this.isloading = true}
 onReachBottom() {//防止发起额外的请求if (this.isloading) return

数据加载完毕不会发起额外请求 

 //判断是否还有下一页数据//当前页码值 * 每页显示多少条数据 >= 总数条数if(this.queryObj.pagenum * this.queryObj.pagesize >= this.total) {return uni.$showMsg('数据加载完毕')}

6.下拉刷新

 {"path" : "goods_list/goods_list","style" : {//上拉触底"onReachBottomDistance": 150,//开启下拉刷新"enablePullDownRefresh": true,"backgroundColor": "#F8F8F8"}},
onPullDownRefresh() {// 重置关键数据this.queryObj.pagenum = 1this.total = 0this.isloading = falsethis.goodsList = []// 重新发起数据请求this.getGoodsList(() => uni.stopPullDownRefresh())}

7.跳转到商品详情页
 

  gotoDetail(goods) {uni.navigateTo({url: '/subpkg/goods_detail/goods_detail?goods_id=' + goods.goods_id})}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全面概述Gitee和GitHub生成/添加SSH公钥

前言 现如今将代码开源已经成为软件开发行业的一种趋势&#xff0c;而现在比较有名的代码托管平台有GItHub、Gitee、Gitlab等相关平台。而我们在使用代码托管平台最为常见的就是如何将自己本地的代码推送到远程托管平台中的仓库中&#xff0c;现如今各大托管平台基本上都提供了…

Mac m1 Flink的HelloWorld

首先在官方下载Downloads | Apache Flink 下载好压缩包后解压&#xff0c;得到Flink文件夹 进入&#xff1a;cd flink-1.19.0 ls 查看里面的文件&#xff1a; 执行启动集群 ./bin/start-cluster.sh 输出显示它已经成功地启动了集群&#xff0c;并且正在启动 standalonesessio…

简单了解HTTP和HTTPS

HTTP的安全问题&#xff1f; 我们都知道HTTP是不安全的&#xff0c;而HTTPS是安全的&#xff0c;那HTTP有哪些安全问题呢&#xff1f;&#xff08;考虑传输过程以及响应方&#xff09; 明文传输&#xff0c;有窃听风险&#xff1a;HTTP协议无法加密数据&#xff0c;所有通信数…

云计算探索-剖析虚拟化技术

引言 虚拟化技术&#xff0c;作为现代信息技术架构的核心构成元素&#xff0c;以其独特的资源抽象与模拟机制&#xff0c;成功地瓦解了物理硬件与操作系统间的刚性连接&#xff0c;开创了一个资源共享、灵活调配的崭新天地。本文将详细解析虚拟化技术的内涵、发展历程、分类及特…

JavaScript的概念

什么是 JavaScript JavaScript 一种直译式脚本语言&#xff0c;是一种动态类型、弱类型、基于原型的高级语言。 脚本语言&#xff1a;在程序的运行过程中逐行进行解释执行&#xff0c;不需要预编译。 动态类型&#xff1a;在声明了一个变量之后&#xff0c;我们能够随时改变…

Kafka 学习之:基于 flask 框架通过具体案例详解生产消费者模型,这一篇文章就够了

文章目录 案例信息介绍后端异步处理请求和后端同步处理请求同步方式异步方式 环境文件目录配置.envrequirements.txt 完整代码ext.pyapp.pykafka_create_user.py 运行方式本地安装 kafka运行 app.py使用 postman 测试建立 http 长连接&#xff0c;等待后端处理结果发送 RAW DAT…

金三银四面试题(九):JVM常见面试题(3)

今天我们继续探讨常见的JVM面试题。这些问题不比之前的问题庞大&#xff0c;多用于面试中JVM部分的热身运动&#xff0c;开胃菜&#xff0c;但是大家已经要认真准备。 你能保证GC 执行吗&#xff1f; 不能&#xff0c;虽然你可以调用System.gc() 或者Runtime.gc()&#xff0c…

【MySQL】DQL-排序查询-语法&排序方式&注意事项&可cv例题语句

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

外观模式详解:简化复杂系统的“门面”担当

在软件开发中&#xff0c;我们经常遇到需要将复杂的子系统整合到一起&#xff0c;为客户端提供一个统一且简化的接口的情况。这时候&#xff0c;外观模式&#xff08;Facade Pattern&#xff09;便应运而生。本文将深入探讨外观模式的应用场景、Java代码实现、在开源项目中的实…

【Linux】寿司线程池{单例模式之懒汉模式下的线程池}

文章目录 回顾单例模式0.多线程下的单例模式的意义1.什么是单例模式1.0设计模式1.1C单例模式的介绍及原理1.2拷贝构造和赋值重载的处理1.3if (nullptr ptr)&#xff0c;nullptr放在比较运算符的前面?1.4实现单例模式的方式 2.实现懒汉方式的单例模式2.1单线程的单例模式2.2多…

微信小程序(黑马优购:登录)

1.点击结算进行条件判断 user.js //数据 state: () >({ // address: {} address: JSON.parse(uni.getStorageSync(address) || {}), token: }), my-settle.vue computed: { ...mapGetters(m_cart,[checkedCount,total,checkedGoodsAmount]), …

前端工程师————CSS学习

选择器分类 选择器分为基础选择器和复合选择器 基础选择器包括&#xff1a;标签选择器&#xff0c;类选择器&#xff0c;id选择器&#xff0c;通配符选择器标签选择器 类选择器 语法&#xff1a;.类名{属性1&#xff1a; 属性值&#xff1b;} 类名可以随便起 多类名使用方式&am…

从乡间小路到布鲁金斯大道:奥林商学院院长的公路之旅

复旦大学-华盛顿大学EMBA项目&#xff0c;是由复旦大学管理学院与美国华盛顿大学奥林商学院联合开办的EMBA项目。美国华盛顿大学奥林商学院&#xff0c;于去年9月迎来新院长Mike。      今年1月&#xff0c;Mazzeo院长首次到访复旦大学&#xff0c;与校友分享了一场 “经济…

中间件安全(apache、tomcat)

靶场&#xff1a; vulfocus Apache Apache HTTP Server 是美国阿帕奇&#xff08; Apache &#xff09;基金会的一款开源网页服务器。该服务器具有快速、可靠且可通过简单的API进行扩充的特点&#xff0c;发现 Apache HTTP Server 2.4.50 中针对 CVE - 2021 - 41773 的修复…

PHP三种方式读取RSA密钥加解密、签名验签完整教程

目录 第一步、生成公私钥 第二步、三种方式读取RSA密钥 第1种&#xff1a;公私钥弄成一行&#xff0c;必须一行没有空格和换行 第2种&#xff1a;直接复制生成公私钥 第3种;复制密钥存储为.pem文件后缀 第三步、RSA加解密 第四步、RSA签名以及验证签名 第五步、封装完整…

Golang基础-8

Go语言基础 介绍 基础 包 包声明 包导入与调用 包成员访问权限 init函数 defer关键字 panic 与 recover 包管理(Go modules) go doc 工具 介绍 本文介绍Go语言中包(包声明、包导入与调用、包成员访问权限、init函数、包管理(Go modules)等)、defer关键字、panic 与 recover、…

微信小程序下载文件时,totalBytesExpectedToWrite为null怎么办?

在微信小程序中使用文件下载的时候&#xff0c;调试的时候发现获取不到文件的总长度totalBytesExpectedToWrite。 解决办法&#xff1a; URL path new URL(url); HttpURLConnection connection (HttpURLConnection) path.openConnection(); // 获取文件总长度 long contentL…

开源知识管理和协作平台:插件丰富,主题精美 | 开源日报 No.209

logseq/logseq Stars: 27.8k License: AGPL-3.0 logseq 是一个注重隐私的开源平台&#xff0c;用于知识管理和协作。 提供强大的知识管理、协作、PDF 标注和任务管理工具支持多种文件格式&#xff0c;包括 Markdown 和 Org-modeWhiteboard 功能可使用空间画布组织想法&#x…

【前端】layui前端框架学习笔记

【前端目录贴】 参考视频:LayUI 参考笔记:https://blog.csdn.net/qq_61313896/category_12432291.html 1.介绍 官网&#xff1a;http://layui.apixx.net/index.html 国人16年开发的框架,拿来即用,门槛低 … 2. LayUi的安装及使用 Layui 是一套开源的 Web UI 组件库&#xff0…

小程序页面滚动?

要在小程序中实现页面滚动&#xff0c;可以使用 <scroll-view> 组件。以下是一个基本的示例&#xff1a; <template><scroll-view class"container" scroll-y><!-- 这里放置页面内容 --><view class"content"><!-- 页面…