第 4-4 课:前后端交互之主题实现

目录

  • 开篇

    • 【系】微信小程序云开发实战坚果商城-开篇
  • 基础篇
    • 【系】微信小程序云开发实战坚果商城-弹性盒子
    • 【系】微信小程序云开发实战坚果商城-ES6 简单入门
    • 【系】微信小程序云开发实战坚果商城-官方案例先运行
  • 前端篇
    • 【系】微信小程序云开发实战坚果商城-商城项目搭建
    • 【系】微信小程序云开发实战坚果商城-所有目录…

在这里我为了和底部的菜单栏区分,我把首页轮播下面的四个菜单称为主题,在日常的开发中我们商品有分类是必不可少的。为了展示数据这里我新建的集合 productTheme 随机关联几条商品信息。

1 逻辑处理

client 新建 models/productModel.js

import { CloudRequest } from '../utils/cloud-request.js'
class ProductModel extends CloudRequest {/*** 根据主题类型获取商品信息* @param {*} theme_type  主题类型* @param {*} callBack */getThemeProduct(theme_type,callBack){theme_type = parseInt(theme_type) this.request({url:"getThemeProduct",data:{theme_type:theme_type},success:res=>{callBack(res)}})}}
export { ProductModel }

2 前台数据处理

回到我们 pages/theme/theme.js

// pages/theme/theme.js
import {  ProductModel } from '../../models/productModel.js'
let productModel = new ProductModel();
Page({/*** 页面的初始数据*/data: {products:[]},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this._init(options.theme_type)},// 初始化_init:function(theme_type){// 根据类型获取商品productModel.getThemeProduct(theme_type,res=>{this.setData({products : res.result.data.data})})},// 跳转商品详情productDetails:function(e){//TODO: 跳转详情wx.navigateTo({url: '/pages/product/product?product_id=' + e.detail.productId,})}})

pages/theme/theme.wxml

<!--pages/theme/theme.wxml-->
<view class='container'><block wx:for="{{products}}" wx:key="key"><product-row-comp product="{{item}}" bind:productDetails="productDetails"></product-row-comp></block>
</view>

wxml:当前页面和组件通信,见前后端交互之首页实现

components/behaviors/product-behavior.js

商品信息Behavior公用,跟前后端交互之首页实现一样,这里就不在贴出代码

components/product-row/index.wxml

<!--components/product-row/index.wxml-->
<view class='container'  bind:tap='productDetails'><view class='product-top' ><image src="{{product.product_img}}"></image></view><view class='product-title' ><text>{{product.product_name}}</text></view><view class='market-price' ><text >¥</text><text>{{product.product_price}}</text></view><view class='product-container'><view class='product-price'><text >¥</text><text>{{product.product_sell_price}}</text></view><view class='product-cart' ><icon class='iconfont icongouwuche'></icon></view></view>
</view>

样式在之前静态页面已经完成

3 代码分解

这个章节想对简单获取类型商品、跳转商品详情。

3.1 初始化数据

在页面加载的时候根据商品类型,theme_type 为主页跳转页面的路径参数,路径参数取出来的时候是字符,而后台主题类型是数值型,所以在这里参数的时候我们需要通过 parseInt 改变类型。

 // 初始化_init:function(theme_type){// 根据类型获取商品productModel.getThemeProduct(theme_type,res=>{this.setData({products : res.result.data.data})})}// molde 层数据getThemeProduct(theme_type,callBack){// 类型改变theme_type = parseInt(theme_type) this.request({url:"getThemeProduct",data:{theme_type:theme_type},// 将 thme_type 传值到后台success:res=>{callBack(res)}})}

3.2 跳转商品详情

   // 跳转商品详情productDetails:function(e){//TODO: 跳转详情wx.navigateTo({url: '/pages/product/product?product_id=' + e.detail.productId,})}

源码地址

在搭建项目前,根据自己需要下载本系列文章的源代码

本项目源码地址:https://gitee.com/mtcarpenter/nux-shop

【系】微信小程序云开发实战坚果商城-前后端交互之主题实现相关推荐

  1. 【系】微信小程序云开发实战坚果商城-前后端交互之订单实现

    第 4-7 课:前后端交互之订单实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...

  2. 【系】微信小程序云开发实战坚果商城-云开发开篇

    第 3-2 课:云开发开篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信 ...

  3. 【系】微信小程序云开发实战坚果商城-开篇

    开篇:无服务开发是未来? 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小 ...

  4. 【系】微信小程序云开发实战坚果商城-商城项目搭建

    第 2-1 课:商城项目搭建 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微 ...

  5. 【系】微信小程序云开发实战坚果商城-扩展篇

    第 5-1 课:扩展篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小程 ...

  6. 【系】微信小程序云开发实战坚果商城-弹性盒子

    第 1-1 课:微信小程序实操弹性盒子 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...

  7. 【系】微信小程序云开发实战坚果商城-前端之订单实现

    第 2-7 课:前端之订单实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系] ...

  8. 【系】微信小程序云开发实战坚果商城-云开发之商品信息和主题商品数据实现

    第 3-8 课:云开发之商品信息和主题商品数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES ...

  9. 【系】微信小程序云开发实战坚果商城-云开发之订单品数据实现

    第 3-9 课:云开发之订单品数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...

最新文章

  1. Android中Toast的用法简介
  2. PostgreSQL创建一个数据库
  3. python websocket实现消息推送_Python Websocket消息推送---GoEasy
  4. Java 集合系列(3): fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)...
  5. linux安全配置-将ssh服务隐藏于Internet(端口碰撞)
  6. 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...
  7. 使用BootStrap编写网页,如何设置全屏页面背景?
  8. 百度api:根据经纬度获取地理位置信息
  9. 学员感言html效果图,学员感言丨非计算机专业学员 开始学HTML5的点点滴滴
  10. java中使用事务案例_Java事务之四——成功的案例
  11. c#实现list集合移除某些列_List方法
  12. openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)
  13. 利用linux mutt 发送邮件(在Shell脚本中使用比较方便)
  14. matlab 离散点求导_Matlab的离散点曲线导数曲率数值模拟方法
  15. 支付宝玉伯:我心目中的优秀API
  16. 隐藏桌面图标软件——CoverDesk for Mac免激活版
  17. go替代python运维_粗读web框架之go gin和python django
  18. oracle11g视频
  19. java笔试题算法题,吐血整理
  20. 卸载华为系统wifi服务器,如何安装随行WiFi驱动及如何卸载驱动

热门文章

  1. 【基于pyAudioKits的Python音频信号处理(七)】端点检测和语音识别
  2. 批量提取文件名到excel,快速提取
  3. C# 控件 button主要属性
  4. ArrayList.subList() VS Arrays.asList :创业更比守业难?
  5. 如何使用Eclipse aCute来进行C#和.NET Core开发
  6. IPv4网络地址转换(NAT)
  7. 烽火HG2543C1获得超级密码删除tr069
  8. mybatis-day01-自定义框架-基础入门
  9. 学习使我充实自己-列表具备的功能
  10. SUSE 10如何修改网卡名称