黑马优购小程序项目详解

1.准备工作

先把wx.request封装好。然后配置路由。把底部的导航配置出来。就是我们的首页、分类、购物车、还有我的,在全局的app.json中配置。

{"pages":["pages/home/home","pages/search/search","pages/my/my","pages/list/list","pages/index/index","pages/logs/logs","pages/goodslist/goodslist","pages/goods/goods","pages/shopsc/shopsc","pages/zhifu/zhifu","pages/shopcar/shopcar","pages/auth/auth","pages/feedback/feedback"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#eb4450","navigationBarTitleText": "黑马优购","navigationBarTextStyle":"white"},"tabBar": {"list": [{"pagePath": "pages/home/home","text": "首页","iconPath": "./icons/home.png","selectedIconPath": "./icons/home-o.png"},{"pagePath": "pages/list/list","text": "列表","iconPath": "./icons/category.png","selectedIconPath": "./icons/category-o.png"},{"pagePath": "pages/shopcar/shopcar","text": "购物车","iconPath": "./icons/cart.png","selectedIconPath": "./icons/cart-o.png"},{"pagePath": "pages/my/my","text": "我的","iconPath": "./icons/my.png","selectedIconPath": "./icons/my-o.png"}]},"style": "v2","sitemapLocation": "sitemap.json"
}

2.封装公共组件

在根目录下创建components文件夹作为公共组件存放的地方,将头部等常用组件封装进去。

3.请求数据

在封装好的request文件里面的http 文件中创建请求函数导入页面 详见wx.request
在页面上请求到数据之后就将数据渲染到页面上

4.页面渲染

4.1分类页tab切换


列表页面,我们左边导航和右边数据是外部盒子的一个滚动条,而不是整个页面的,左边和右边的滚动条是不互相影响的,因此我们使用了一个小程序内置的标签scroll-view 给这个标签加上scroll-y的属性就能实现滚动的效果。

  <scroll-view scroll-y></scroll-view>  // 作为一个盒子使用,给定一个高度或宽度,让里面的内容在这个区域出现滚动条// scroll-y   y轴开启滚动条// scroll-x   x轴开启滚动条

当点击左边盒子的时候获取到对应的数据来渲染右边

  chanege(e){const ii=e.currentTarget.dataset.indexthis.setData({liindex:ii,right:this.data.tab[ii].children})},

点击右边商品的时候获取到对应的商品id来进行跳转到对应的页面之后获取对应的数据

  fn1(e){const id=e.currentTarget.dataset.cidwx.navigateTo({url: '/pages/goodslist/goodslist?cid='+id,})},

4.2商品列表页


关于
商品列表上拉加载更多,下拉刷新
点击商品跳转到对应的详情页

  fn1(e){console.log(e.currentTarget.dataset.index);let i = e.currentTarget.dataset.indexwx.navigateTo({url: '/pages/goods/goods?goods_id='+i,})},

4.3 商品详情页


在进入页面的时候,通过接口获取到数据,然后将数据渲染到页面上

小程序分享,收藏,客服功能
加入购物车

加入购物车的时候进行判断,判断当前商品是否已经在购物车里面,在的话就让该商品的数量+1,不在就将该商品添加至购物车的本地存储中

  add() {let car = wx.getStorageSync("car") || [];let index = car.findIndex(v => v.goods_id === this.data.list.goods_id);if (index === -1) {this.data.list.num = 1;this.data.list.check = false;car.push(this.data.list);wx.setStorageSync("car", car);} else {car[index].num++;}wx.setStorageSync("car", car);wx.showToast({title: '加入成功',icon: 'success',mask: true});},

购物车


购物车全选,当点击全选的时候,判断全选按钮点击后的状态,来将上面的数据来推进新的数组里面,并计算总价

  myChange1(e) {var ckk=[];if(e.detail.value.length==1){this.data.list.forEach((item,index)=>{item.check=trueckk.push(item.goods_id)})this.setData({ckall:true,clist:ckk,list:this.data.list})this.jisuan()}else{this.data.list.forEach((item,index)=>{item.check=false})this.setData({ckall:false,clist:ckk,list:this.data.list})this.jisuan()}},

交互,当点击单选的时候,判断已被选中的长度是否跟购物车总长度一致来决定是否全选。

  myChange(e) {this.setData({clist: e.detail.value})if (this.data.clist.length == this.data.list.length) {this.setData({ckall: true})} else {this.setData({ckall: false})}this.jisuan()},

计算总价 在已选中的数组中进行计算

  jisuan() {var aa = 0;this.data.clist.forEach((item, index) => {this.data.list.forEach((it, i) => {if (it.goods_id == item) {aa += it.goods_price * it.numif (this.data.list[i].check == false) {this.data.list[i].check = true} else {this.data.list[i].check = false}wx.setStorageSync("car", this.data.list);}})})this.setData({sum: aa})},

商品加加减减
当点击减号的时候判断当前商品的数量是否大于1,大于一的话就让当前商品的数量-1,不大于一就将该商品删除掉,点击加号让对应商品的数量++就可以了

  jian(e) {var i = e.currentTarget.dataset.index;let car = this.data.listconsole.log(car);if (car[i].num > 1) {car[i].num--wx.setStorageSync("car", car);this.setData({list: car})this.jisuan()} else {car.splice(i, 1)wx.setStorageSync("car", car);this.setData({list: car})this.jisuan()if(this.data.list.length!=0){this.setData({show:true})}else{this.setData({show:false})}}},jia(e) {var i = e.currentTarget.dataset.index;let car = this.data.listconsole.log(this.data.list[i].check);car[i].num++wx.setStorageSync("car", car);this.setData({list: car})console.log(this.data.list[i].check);this.jisuan()},

微信支付流程

黑马优购小程序项目详解相关推荐

  1. 2020黑马程序员之黑马优购小程序

    2020黑马优购小程序完成地址,原密地址:https://gitee.com/yangzongtai/uni-shop1.git

  2. 小程序开发工具中黑马优购小程序tabs组件_别不信,二十一天巧妙精通微信小程序的开发,附赠教程...

    资料简介: 这是一本帮助编程爱好者和从业人员从零开始学习微信小程序设计的书.本书紧跟微信小程序的技术发展,是目前在该领域率先进行系统的技术探讨和培训的著作. 本书站在学习的角度,目的是让学习者通过21 ...

  3. 黑马优购小程序之项目搭建

    文章目录 1.1 新建项目 1.2 搭建目录结构 1.3 清理无用文件 1.4 搭建项目页面 1.5 搭建tabBar 1.6 初始化页面样式 1.6.1 定义主题颜色和字体 1.6.2 使用定义的主 ...

  4. 用vue来开发小程序项目详解,极大方便了开发者

    案例图: 五分钟教程: 通过 Vue.js 命令行工具 vue-cli,你只需在终端窗口输入几条简单命令,即可快速创建和启动一个带热重载.保存时静态检查.内置代码构建功能的小程序项目: # 全局安装 ...

  5. 小程序开发工具中黑马优购小程序tabs组件_还觉得小程序开发很难?这几款小程序开发工具小白都能用哦!...

    玩过H5,微海报,直播之后-紧跟时代潮流的品牌公关狗们总是会在第一时间去研究时下最in的营销工具.而自从微信小程序公测之后,很多小伙伴也是中毒不浅,但是在技术开发的问题上,却不知道该如何下手.作为不会 ...

  6. 黑马优购小程序之分类模块

    文章目录 1.1 目标效果图 1.2 网络请求和数据解析 1.2.1 数据解析 1.2.2 构建网络请求,处理数据 1.3 绘制UI 1.3.1 引入自定义组件 1.3.2 页面左右分割 1.3.3 ...

  7. 黑马优购小程序之接口优化

    文章目录 1.1 提取接口公共路径 1.2 使用es7的async 1.2.1 开启增强编译 1.2.2 修改代码 1.3 简化返回值 1.4 小结 1.1 提取接口公共路径 在前面的开发中,网络请求 ...

  8. 优购小程序项目效果预览

    tabBar相关 1.首页 2.分类 3.购物车 4.我的信息页面 搜索 商品列表 商品详情 微信支付

  9. 微信小程序python flask_Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个 ...

最新文章

  1. WebSpider的编码问题(乱码)浅析
  2. 分支优化:neg+sbb算术运算代替逻辑跳
  3. TDD in .NET Core - 简介
  4. java中塑形_Java学习5——接口和多态
  5. 协程 c语言,协程-C语言实现
  6. Dynamics AX2012 标准权限控制工作原理
  7. 求解不定方程 (扩展欧几里得算法)
  8. WIN10 激活系统
  9. 【转】这么多计算几何题目,够你练了
  10. php加入购物车怎样实现_php简单实现加入购物车功能案例
  11. 不使用setPositiveButton 如何让alertdialog消失
  12. 菜鸡解析CSS(cascading style sheet)
  13. php 字符查询_php中几个常用的字符串查找函数
  14. 【C语言算法】归并排序
  15. java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统
  16. git上传代码简单方法 简单git上传代码工具
  17. 三分钟学会数据库, replace() 替换
  18. javascript+html获取外汇报价并实时更新
  19. 滚动控件(ScrollBar)
  20. Python黑帽子 黑客与渗透测试编程之道(七) 第四章:Scapy:网络的掌控者

热门文章

  1. 一个结婚十年的男人总结36条,恋爱不是喜欢就够的
  2. 新年将至,100行Html+css实现烟花特效陪你跨年(附春节对联)
  3. 动手给自己的Blog做了个整容手术,决定在CSDN上安家了
  4. 书摘 - 重新定义公司:谷歌是如何运营的
  5. leo-会员消费管理系统(连锁)
  6. Mysql InnoDB引擎的行锁和表锁
  7. 从多波段的TIFF影像中选择三个波段转为JPG格式图片的方法
  8. 解决adb报5037问题
  9. 基于传统数据查询慢的优化方案
  10. Golang 垃圾回收机制详解