一.商品列表

1.1 获取数据

首先能够进入商品列表的途径

传的数据有

了解了这个之后就可以开始了,先创建分支

创建编译模式,并分配初试数据

这个时候就可以获取数据了

需要的数据

所以在发起请求之前需要整理一下数据,先定义数据

整理数据发起请求

1.2 渲染页面

注意我们可以去定义一个默认的图片在data,如果当前这个图片没有就为默认图片

1.3 item封装自定义组件

创建组件

新建插件

然后将我们的结构复制过来,样式也复制过来

然后就是组件利用方面,既然封装的是item组件,就要提现item组件的复用性,所以item这个组件必然是在父组件里面被vfor的

所以遍历应该在父组件这边就完成,那么给子组件得到的数据就是每一个具体的goods,就可以先去改造子组件了

记得将默认图片也放在子组件

父组件的改造

然后子组件这边要接受

注意props的简写形式,直接在后面为一个数组

1.4 过滤器处理价格

回顾一下vue的过滤器

首先关键字filters

然后里面是一个函数形式,靠的是返回值,传进来的参数是等会要用的地方的插值语法的参数

用的时候通过一个管道符连接,前面的值就相当于参数

1.5 上拉加载更多

首先修改我们的下拉触底的距离

注意,在uniapp里面没有单独的json文件,所以所有的页面的json修改都在同体的pages.json里面,对应的下面有一个对象这个就是他单独的json配置

然后在这个分包的下拉触底事件来操作

下拉刷新一次,就将页码加一页,同时请求数据里面也要改造一下,赋值我们的列表数据,需要 进行一个扩展运算符的融合

然后解决两个下拉触底经典问题

第一个是节流阀的问题,不能托底过快导致请求好几次数据

声明一个节流阀

为什么放在下面表示数据请求完毕了才让他为fasle的,因为这是await,所以只有返回成功了才会进入下一步

然后下拉触底事件判断

为true就出去,因为为true表示正在请求数据

第二个问题是:数据刷新完毕不应该再发起数据请求

这里也有一个公式 当前页×每页展示数据大于等于总数据的话就说明到头了不能请求数据了

1.6 上拉刷新

首先还是先开启上拉刷新

然后在上拉刷新事件做处理

然后有一个很关键的步骤重新获取数据,我会传一个回调,来关闭下拉刷新效果

记住这种形式,用短路运算来判断有无回调,有就执行,没得就不执行

1.6.1 存在问题 上拉刷新回调无效

1.7 跳转商品详情页面

将block组件改为view组件,绑定click事件

二.商品详情

首先创建分支并创建编译模式

然后发起请求

一样的data定义数据,onload发起函数调用,methods定义请求函数

然后数据赋值

2.1 轮播图效果

定义轮播图结构

然后实现轮播图预览效果

用到uni的一个api previewImage,需要当前照片的索引,第二个参数是一个数组,里面每一项为照片的url地址

返回一个新数组,并且返回的值为每一张big照片

2.2 商品信息区

定义ui结构,并渲染

2.3 商品详情页

这里由于服务器返回的是直接带html标签的一串文本,所以这类要用到小程序专门用来解析html字符串的组件富文本rich-text

里面有一个nodes属性为字符串即可

问题1:

中间会有空隙

其根本原因还是因为 img标签为行内块的原因,这里应该把img都变成block

采用的方法是replace来替换

注意前面如果要加g/i等参数表示是这个

问题2:

价格在刷新一瞬间为undefined的问题

直接条件渲染即可

2.4 商品导航区

有现成的组件,通过 uni-goods-nav这个组件来使用

首先需要定义数据

options表示左边的按钮区域,buttongroup表示右边的区域

然后他的组件写上来

将其固定定位,并记得整个父盒子有个padding-bottom

关于他的点击事件

click表示左边的区域点击事件,buttonclick表示右边的区域点击事件

里面接受一个形参e,可以拿到你点击的这个区域的一些信息

uniapp/微信小程序 项目day03的更多相关文章

  1. 01 uniapp/微信小程序 项目day01

    一.起步 1.1 配置uni-app开发环境 什么是uni-app,就是基于vue的一个开发框架,可以将我们写的一套代码,同时发布到ios.安卓.小程序等多个平台 官方推荐使用Hbuilderx来写u ...

  2. 05 uniapp/微信小程序 项目day05

    ​ 一.登录与支付 1.1 登录 1.1.1 条件判断 当我们点击结算应当进行条件判断 第一个如果没有勾选商品 第二个是没选择地址 第三个是未登录 1.1.2 页面布局 应该有两个页面,一个点击登录, ...

  3. 04 uniapp/微信小程序 项目day04

    一.加入购物车 1.1 购物车数量 先创建购物车git 这里的数据肯定要做全局数据,因为不能只在details这个页面去操作他,他到底有几个也是由购物车页面获取到的 所以需要vuex 创建store文 ...

  4. 02 uniapp/微信小程序 项目day02

    一.分类 1.1 页面布局 首先创建cate的分支 定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件 scroll 这个组件如果是y scroll那就要固定高度,x scroll那就要固定宽 ...

  5. 使用uni-app(Vue.js)创建运行微信小程序项目步骤

    使用uni-app(Vue.js)开发微信小程序项目步骤 1. 新建一个uni-app项目   创建完成后的目录结构 2. 打开微信小程序开发工具端的端口调试功能 3. 运行创建的项目 效果

  6. 微信小程序项目转换为uni-app项目

    一.它是谁? [miniprogram-to-uniapp]转换微信小程序"项目为uni-app项目.原则上混淆过的项目,也可以进转换,因为关键字丢失,不一定会完美. 二.它的原理是什么? ...

  7. 【重点突破】—— UniApp 微信小程序开发官网学习One

    一.初步认识 uni-app官网:https://uniapp.dcloud.io/component/README HBuilderX官方IDE下载地址: http://www.dcloud.io/ ...

  8. 微信小程序开发01 --- 微信小程序项目结构介绍

    一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...

  9. 高仿Readhub小程序 微信小程序项目【原】

    # News #### 项目介绍微信小程序项目涉及功能 https://gitee.com/richard1015/News https://github.com/richard1015/News 高 ...

随机推荐

  1. 四连测总结(XYX)

    目录 成绩 总结 事后... 成绩 telephonewire monkey 总分 0 56 56 cowjog guard path temperature 总分 0 40 0 68 108 cba ...

  2. Cannot resolve method 'println(java.lang.String)'

    jsp文件中println爆红 <% int sum = 0; for (int i = 1; i <=100 ; i++) { sum+=i; } out.println("& ...

  3. .NET 7 性能改进 -- 至今为止最快的.NET平台

    2022年8月31日 Stephen Toub 发布的关于 .NET 7 性能改进的博客, 核心主题是 .NET 7 速度很快. 这篇博客非常的长,我尝试将它拷贝到Word 里,拷贝的时间都花了几分钟 ...

  4. grub2配置文件丢失如何修复

    实验操作准备 此步骤因实验需要所做,系统开机属grub界面无需此步! lsblk命令为了查看根分区挂载在什么位置 rm -rf /boot/grub2/grub.cfg命令为删除grub2配置文件到达 ...

  5. 第五章 部署master主控节点

    一.部署etcd集群 1.1 集群规划 主机名 角色 IP hdss7-12 leader 10.4.7.12 hdss7-21 follow 10.4.7.21 hdss7-22 follow 10 ...

  6. 【读书笔记】C#高级编程 第十章 集合

    (一)概述 数组的大小是固定的.如果元素个数是动态的,就应使用集合类. List<T>是与数组相当的集合类.还有其它类型的集合:队列.栈.链表.字典和集. (二)列表 1.创建列表 调用默 ...

  7. 利用c++编写bp神经网络实现手写数字识别详解

    利用c++编写bp神经网络实现手写数字识别 写在前面 从大一入学开始,本菜菜就一直想学习一下神经网络算法,但由于时间和资源所限,一直未展开比较透彻的学习.大二下人工智能课的修习,给了我一个学习的契机. ...

  8. C++ 左值引用与一级指针

    将**左值引用**用于**一级指针**时,有以下几种用法: ```c++ //方式一:引用一级指针,常规用法 int a = 5; int * pa = &a; int * &rpa ...

  9. filebeat中增加其他参数用来区分不同的日志来源示例

    filebeat.yml配置文件参数 在source里加入了一个fields叫做"appach: true". filebeat.inputs: - type: log enabl ...

  10. 几篇关于MySQL数据同步到Elasticsearch的文章---第二篇:canal 实现Mysql到Elasticsearch实时增量同步

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484377&idx=1&sn=199bc88 ...