黑马微信小程序-实现本地服务九宫格并展示商品列表

news2024/11/17 8:24:08

一、九宫格实现

1.获取数据

1.1准备接口

黑马接口:https://applet-base-api-t.itheima.net/categories

说明:这是获取九宫格的数据接口

1.2使用接口

 说明:声明变量获取数据。

  getGridList() {
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/categories',
      method: "GET",
      success: (res) => {
      this.setData({
        gridList:res.data
       // 服务器拿到数据并保存
      })
      }
    })
  },

 res.data数据

2.静态页面

<view class="grid-list">
//绑定gridList数据
<navigator class="grid-item" wx:for="{{gridList}}"
//导航动态传参
url="/pages/shoplist/shoplist?id={{item.id}}&title={{item.name}}"
 wx:key="id">
//显示图片
<image src="{{item.icon}}" mode=""/>
//显示图片名称
<text>{{item.name}}</text>
</navigator>
</view>

编写简单css

/* pages/home/home.wxss */
swiper {
  height: 350rpx;
}

swiper image {
  width: 100%;
  height: 100%;
}

.grid-list {
  display: flex;
  flex-wrap: wrap;
}

.grid-list .grid-item {
  width: 33%;
  height: 200rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-right: 1px solid #efefef;
  border-bottom: 1px solid #efefef;
}

.grid-item image {
  width: 60rpx;
  height: 60rpx;
}

.grid-item text {
  font-size: 24rpx;
  margin: 10px 0;
}

实图展示 

 

 

3.存储参数

声明query变量 

并设置导航标题

  onReady() {
    wx.setNavigationBarTitle({
      title: this.data.query.title,
    })
  },

标题展示 

 

 

二、商品列表展示

2.获取数据

2.1准备接口

商品列表接口:https://applet-base-api-t.itheima.net/categories/:id/shops

 说明::id表示动态的参数

2.2使用接口

  getShopList() {
    wx.request({
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method:'GET',
      data:{
        _page:this.data.page,
        _limit:this.data.pageSize
      },
      success:(res)=>{
        console.log(res);
      this.setData({
        //其实我觉得解构服务器的数据保存起来就可以了,不知道为什么还要把说明在data的数据解构加
//起来!
        shopList:[...this.data.shopList,...res.data],
//+是将字符串转成数值型
        total:+res.header["X-Total-Count"]
      })
      }
    })
  },

当页面加载,就调用函数

  onLoad(options) {
    this.setData({
      // 保存传递的参数
      query: options
    }),
    // 当页面加载完成后,调用方法
    this.getShopList()
  }

res数据展示

 3.静态展示

<!-- wx:key为什么不用解构语法是因为微信小程序自动解构出来了,可以直接使用;item也是微信小程序默认解构出来变量 -->
<view class="shop-item" wx:for="{{shopList}}" wx:key="id">
<view class="thumb">
<image src="{{item.images[1]}}" mode=""/>
</view>
<view class="info">
<text class="shop-title">{{item.name}}</text>
<text>{{item.phone}}</text>
<text>{{item.address}}</text>
<text>{{item.businessHours}}</text>
</view>
</view>

 加入简单css

.shop-item{
  display: flex;
  padding: 15rpx;
  border: 1rpx solid #efefef;
  margin: 15rpx;
  border-radius: 8rpx;
  box-shadow: 1rpx 1rpx 15rpx #ddd;
}
.thumb image{
  width: 250rpx;
  height: 205rpx;
  display: block;
  margin-right: 15rpx;
}
.info{
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  font-size: 24rpx;
}
.shop-title{
  font-weight: bold;
}

 4.实图展示

 三.、部分源码展示

3.home文件夹

3.1home.wxml

<!--pages/home/home.wxml-->
<!-- 轮播图区域 -->
<swiper indicator-dots circular>
  <swiper-item wx:for="{{swiperList}}" wx:key="id">
    <image src="{{item.image}}" mode="" />
  </swiper-item>
</swiper>
<!-- 九宫格容器 -->
<view class="grid-list">
<navigator class="grid-item" wx:for="{{gridList}}"
url="/pages/shoplist/shoplist?id={{item.id}}&title={{item.name}}"
 wx:key="id">
<image src="{{item.icon}}" mode=""/>
<text>{{item.name}}</text>
</navigator>
</view>
<!--图片区域  -->
<view class="img-box">
<image src="" mode=""/>
</view>

3.2home.js

// pages/home/home.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 轮播图的数据
    swiperList: [],
    // 获取九宫格的数据
    gridList: []
  },
  getGridList() {
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/categories',
      method: "GET",
      success: (res) => {
      this.setData({
        gridList:res.data
    
      })
      }
    })
  },
  getSwiperList() {
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/slides',
      method: 'GET',
      success: (res) => {
        this.setData({
          swiperList: res.data
        })
      },


    })
  },
  // 发起get请求
  // getInfo() {
  //   wx.request({
  //     url: 'https://applet-base-api-t.itheima.net/api/get',
  //     method: "GET",
  //     data: {
  //       name1: "zs",
  //       age: 20
  //     },
  //     success: (res) => {
  //       console.log(res.data);
  //     }
  //   })
  // },
  // postInfo(){
  //   wx.request({
  //     url: 'https://applet-base-api-t.itheima.net/api/post',
  //     method:'POST',
  //     data:{
  //       name:"ls",
  //       age:33
  //     },
  //     success:(res)=>{
  // console.log(res.data);
  //     }
  //   })
  // },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // this.getInfo()
    // this.postInfo()
    this.getSwiperList(),
      this.getGridList()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

 4.shoplist文件夹

4.1shplist.wxml

<!--pages/shoplist/shoplist.wxml-->
<!-- wx:key为什么不用解构语法是因为微信小程序自动解构出来了,可以直接使用;item也是微信小程序默认解构出来变量 -->
<view class="shop-item" wx:for="{{shopList}}" wx:key="id">
<view class="thumb">
<image src="{{item.images[1]}}" mode=""/>
</view>
<view class="info">
<text class="shop-title">{{item.name}}</text>
<text>{{item.phone}}</text>
<text>{{item.address}}</text>
<text>{{item.businessHours}}</text>
</view>
</view>

4.2shoplist.js

// pages/shoplist/shoplist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    query: "",
    shopList: [],
    //页数
    page: 1,
    //展示数据的条数
    pageSize: 10,
    total:0
    },
  getShopList() {
    wx.request({
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method:'GET',
      data:{
        _page:this.data.page,
        _limit:this.data.pageSize
      },
      success:(res)=>{
        console.log(res);
      this.setData({
        shopList:[...this.data.shopList,...res.data],
        total:+res.header["X-Total-Count"]
      })
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      // 保存传递的参数
      query: options
    }),
    // 当页面加载完成后,调用方法
    this.getShopList()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    wx.setNavigationBarTitle({
      title: this.data.query.title,
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

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

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

相关文章

用雪花 id 和 uuid 还是自增id做 MySQL 主键

MySQL中设计表的时候&#xff0c;MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一)&#xff0c;而是推荐连续自增的主键id&#xff0c;官方的推荐是auto_increment&#xff0c;那么为什么不建议采用uuid&#xff0c;使用uuid究竟有什么坏处&#xff1f; MySQ…

如何应用Nginx Rewrit

目录 一、Nginx Rewrite 二、Rewrite功能 Rewrite跳转场景 Rewrite跳转实现 Nginx 跳转 pcre支持 重写模块 Rewrite实际场景 Rewrite命令/语法格式 flag标记说明 location分类 location优先级 rewrite和location相比 三、跳转案例 实现域名跳转 第一步 修改指…

Gof23设计模式之原型模式

1.概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 2.结构 原型模式包含一下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的clone()方法具体原型类&#xff1a;实现了抽象圆形类的clone()方法…

Opencv 源码编译以及调用相关

查看Ubuntu上面已经安装的opencv的版本 pkg-config --modversion opencv源码编译 源码下载, 注意其中的batch&#xff0c; 选择一致。 git clone https://github.com/opencv/opencv.git # 下面的仓库为第三方库&#xff0c;可以根据需要选择 git clone https://github.com/o…

npm install --save-dev electron报错

报错&#xff1a; 清除一下缓存&#xff0c;并删除掉node_module npm cache clean --force切换cnpm安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org安装electron cnpm i electron --save-d安装成功&#xff01;

PHP 音乐网站系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 音乐网站系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库为 mysql5.0&#xff0c;使用php语言开发。 源码…

为按钮和表单绑定事件常用的两种方式

文章目录 前言一、常用事件二、常用事件绑定方式一三、常用事件绑定方式二四、onsubmit()表单事件特别绑定方式4.1 事件绑定方式一使得onsubmit()真正起效 五、常见事件绑定小Bug绑定事件一不规范引发的Bug绑定事件二不规范引发的Bug 前言 在编写代码时&#xff0c;我们难免需要…

VUE使用v-html解析失败和解决方案

有些时候我们拿到后端返回内容进行v-html解析的时候&#xff0c;会发现解析之后&#xff0c;页面展示的还是html内容&#xff0c;我分析了我遇到的情况&#xff0c;希望能帮到大家。 原因&#xff1a;是因为后端返回数据的时候没有对内容进行html做转义&#xff0c;导致页面输出…

爬虫入门指南:学习爬虫的基础知识和技巧

文章目录 爬虫基础知识什么是爬虫&#xff1f;爬虫的工作原理爬虫的应用领域 爬虫准备工作安装Python安装必要的库和工具 网页解析与XPath网页结构与标签CSS选择器与XPathXpath 语法XPath的基本表达式&#xff1a;XPath的谓语&#xff08;Predicate&#xff09;&#xff1a;XPa…

数据挖掘与数据分析之统计知识篇

1、自由度是什么&#xff1f;怎么确定&#xff1f; 统计学上&#xff0c;自由度是指当以样本的统计量估计总体的参数时&#xff0c;样本中独立或能自由变化的数据个数叫自由度。一般来说&#xff0c;自由度等于独立变量减掉其衍生量数。举例来说&#xff0c;变异数的定义是样本…

Revit U型墩柱的绘制方法和生成柱方法

一、Revit U型墩柱的绘制方法 这里教大家一个墩柱的绘制步骤&#xff0c;我们采用一级等级考试第八期中的U型墩柱试题来给大家演示绘制步骤。 首先我们要明白这里需要采用族样板来绘制&#xff0c;新建一个族样板打开我们的公制常规模型样板 进入立面绘制题目中所需要的参照先&…

java基础(并发编程)-设计模式~同步模式之保护性暂停

一、同步模式之保护性暂停定义 保护性暂停即Guarded Suspension&#xff0c;用在一个线程等待另一个线程的执行结果。 要点 有一个结果需要从一个线程传递到另一个线程&#xff0c;让他们关联到同一个Guarded Object。如果有结果不断从一个线程到另一个线程&#xff0c;那么…

Covex combination和affine combination

Covex combination和affine combination是两种常见的线性组合方法。 Covex combination&#xff08;凸组合&#xff09;是指在线性组合中&#xff0c;所有权重&#xff08;coefficients&#xff09;取非负值且总和为1的情况。也就是说&#xff0c;对于给定的一组向量或点集合&…

Linux系统编程:详解进程地址空间

目录 一. 进程空间的布局 二. 进程地址空间 2.1 早期CPU访问物理内存的方式 2.2 什么是虚拟地址&#xff08;进程地址空间&#xff09; 2.3 操作系统对地址空间的管理方法 三. 地址空间存在的意义 四. 总结 一. 进程空间的布局 在语言层面学习C/C时&#xff0c;根据变量…

android studio 单独运行java 文件

首先&#xff0c;创建一个新的java文件。 然后&#xff0c;在Test.java文件中写上如图所示的代码。 接下来&#xff0c;我们把目录模式从Android转换成Project。 打开.idea文件夹下的gradle.xml文件。 在gradle.xml文件中添加上红色方框中的内容。 <option name"delega…

MySQL GROUP BY 多个字段的用法说明

MySQL GROUP BY 多个字段的用法说明 1. 说明2. 举例附录 1. 说明 在 mysql 中使用 group by 的意思是分组查询。如果 group by 后面跟的是单个字段&#xff0c;那么表示按照这个字段分组查询&#xff0c;如果 group by 后面跟的是多个字段&#xff0c;那么表示按照这些字段的不…

关于使用idea中遇到给Dependencies没有加入jar包,但是在war_exploded中lib有

lib文件夹无jar包 Dependencies无jar包 war_exploded中存在此jar 原因是在此有jar包 当去掉时

深入解析 css.1.5

❑ 控制选择器的优先级。 ❑ 不要混淆层叠和继承。 ❑ 某些属性会被继承&#xff0c;包括文本、列表、表格边框相关的属性。 ❑ 不要混淆initial和auto值。 initial是一个CSS属性的初始值&#xff0c;它会将属性的值重置为浏览器默认值。例如&#xff0c;如果将background-co…

其实失败才是人生常态,赢者通吃确实存在,但那不代表绝大多数人。

其实失败才是人生常态&#xff0c;赢者通吃确实存在&#xff0c;但那不代表绝大多数人。 &#x1f4e2;今年的就业难度可能是之前5年最难的一年&#xff0c;也有可能是以后5年最好的一年。 &#x1f4e2;&#x1f4e2;疫情的回落&#xff0c;仿佛只带动了旅游业的发展&#x…

在EasyCVR中调用快照接口返回404是什么原因?如何解决?

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;能在复杂的网络环境中将前端设备进行统一集中接入&#xff0c;实现视频资源的汇聚管理、直播鉴权、转码处理、多端分发、智能告警、数据共享等能力与服务。此外&#xff0c;平台也提供了丰富的API接口供用户自由调用、集成…