vue商品分类列表页面_商城微信小程序(二)——完成分类页面及商品列表页

本文详细介绍了使用Vue开发微信小程序中商品分类列表页面和商品列表页的过程,包括页面预览、主要代码展示(index.js, index.json, index.less, index.wxml)以及遇到的难点,如less布局编写。商品列表页实现了上拉加载更多和下拉刷新功能,并涉及父组件与子组件(Tabs组件)的数据交互技术点。" 52652529,5724558,JavaScript数组与字符串操作详解,"['JavaScript', '数组操作', '字符串方法']
摘要由CSDN通过智能技术生成

 分类页面预览图:

0e9f90a2c5fb569f87ea0dbd18bdbd42.png

分类页面主要代码

index.js

// pages/category/index.js
import {
    
  request
} from "../../request/index.js"
Page({
    

  /**
   * 页面的初始数据
   */
  data: {
    
    //左侧菜单数据
    leftMenuList: [],
    //右侧的商品数据
    rightContent: [],
    // 被点击的左侧菜单
    currentIndex: 0,
    //右侧距离顶部距离
    scrollTop:0,

  },
  //接口返回数据
  Cates: [],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    

    /**
     * 1,先判断本地储存中有没有旧的缓存数据
     * 本地存储数据格式:
     * {time.Data.now(),data:[.....]}
     * 2,没有数据就发送请求,
     * 3,有旧数据且旧数据没有过期,直接使用本地储存中的旧数据
     */
    const Cates = wx.getStorageSync("cates");
    if (!Cates) {
    
      //不存在,获取数据
      this.getCates();
    } else {
    
      //本地有缓存
      if (Date.now() - Cates.time > 1000 * 10) {
    
        //超过10s就重新发送请求
        this.getCates();
      } else {
    
        //可以使用本地缓存数据
        this.Cates = Cates.data;
        //构造左侧菜单数据
        let leftMenuList = this.Cates.map(v => v.cat_name);
        //构造右侧商品数据
        let rightContent = this.Cates[0].children;
        this.setData({
    
          leftMenuList,
          rightContent,
        })
      }
    }


  },

  //获取分类数据
  getCates() {
    
    request({
    
      url: "/categories"
    }).then(res => {
    
      this.Cates = res.data.message;
      //把结构数据存入本地缓存
      wx.setStorageSync('cates', {
    
        time: Date.now(),
        data: this.Cates
      });

      //构造左侧菜单数据
      let leftMenuList = this.Cates.map(v => v.cat_name);
      //构造右侧商品数据
      let rightContent = this.Cates[0].children;
      this.setData({
    
        leftMenuList,
        rightContent,
      })
    })
  },

  //左侧菜单的点击事件
  handleItemTap(e) {
    
    /*
    1,获取被点击菜单的索引
    2,给data中的currentIndex赋值
    3,根据不同索引渲染右侧内容
    */
    const {
    
      index
    } = e.currentTarget.dataset;
    let rightContent = this.Cates[index].children;
    this.setData({
    
      currentIndex: index,
      rightContent,
      //设置右侧距离顶部距离
      scrollTop:0,
    });

  },

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

  },

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

  },

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

  },

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

  },

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

  },

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

  },

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

  }
})

index.json

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值