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

news/2024/7/20 2:33:11 标签: 微信小程序, 小程序

一、九宫格实现

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.niftyadmin.cn/n/479613.html

相关文章

Matlab统计分析 -- 判别分析算法模型

统计分析 – 判别分析算法模型 模型概括 MATLAB中有一个命令: d mahal(Y,X) 计算X矩阵每一个点&#xff08;行&#xff09;至Y矩阵中每一个点&#xff08;行&#xff09;的马氏距离。 其中: Y的列数必须等于X的列数&#xff0c;但它们的行数可以不同。X的行数必须大于列数。输…

mfc100u.dll丢失的各种解决方法分享,探究mfc100u.dll文件

在计算机系统中&#xff0c;有许多重要的文件扮演着关键角色。其中之一就是Mfc100u.dll&#xff0c;一但这个文件丢失了&#xff0c;那么你的电脑就会出现问题&#xff0c;如程序运行不了等等。今天主要来给大家讲讲Mfc100u.dll这个文件&#xff0c;mfc100u.dll丢失的各种解决方…

【程序人生】写前端代码应该具备哪些潜在的规范

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;前端代码那些规范 前言&#xff1a;代码的书写规则&#xff0c;从项目运行来看或许没有什么很大的差别&#xff0c;但如果能写出比较符合规范的代码&#xff0c;作为开发人员在编写、阅…

声明成员变量的时候什么时候用public 什么时候用private?

在Java中&#xff0c;成员变量&#xff08;类的属性&#xff09;可以使用不同的访问修饰符进行声明&#xff0c;包括public和private。 下面是使用public和private的一般指导原则&#xff1a; 1. public成员变量&#xff1a; - 当您希望该成员变量在类的外部可以直接访问时…

Flask开发网页步骤详解

文章目录 Flask路由和视图函数Flask变量规则如何动态构建特定函数的URLFlask get 和 post 方法通过Html表单发送Post请求Flask 模板Jinja2 基本使用1.变量名2.控制语句 Flask用户表单输入数据后端通过form获取数据Flask 的 args 获取数据Flask 的Cookies 获取数据及代码实现Fla…

【样式】input 输入框 和 选择框,增加,删除

效果图 uview <template><view class"addbox"><view class"order bgf u-m-b-200"><view class"common_title u-p-b-30"><text></text> 商品清单</view><view class"shangpinbox u-m-b-20&qu…

动手学深度学习v2 p1引言 监督学习与无监督学习

1.引言 1.2. 机器学习中的关键组件 首先介绍一些核心组件。无论什么类型的机器学习问题&#xff0c;都会遇到这些组件&#xff1a; 可以用来学习的数据&#xff08;data&#xff09;&#xff1b; 如何转换数据的模型&#xff08;model&#xff09;&#xff1b; 一个目标函数…

数字化转型排头兵,金融行业如何利用科技赋能业务 | TVP金融交流会

引言 金融行业&#xff0c;是数字化转型浪潮中的排头兵。这个上千年来&#xff0c;不断创新的行业&#xff0c;从以物易物到纸币发行再到数字资产&#xff0c;承袭至今的是保障客户资产安全&#xff0c;提升资产流通效率的本心。进入产业互联网时代以后&#xff0c;金融科技的发…