微信小程序:有条件的展示卡片

2024-01-18 20:45:58 浏览数 (2)

需求:当公告的发布时间小于当前时间的话才做显示 思维偏差: 第一我把该条件写在了子组件卡片的位置,这显然是不成立的; 第二我居然是想着将后台返回的时间让他们格式化后,再进行年月日的比较,这样让代码复杂化了难度也更加难了。 正确做法: 首先将卡片push出来的地方是在接口那里,那么你应该是到接口那里增加条件;其次比较两者时间,直接用时间戳比较(因为时间戳都是数字,更方便更简单)。 做法: 1.先定义当前时间的时间戳 2.其次遍历定义发布时间的时间戳 3.用if条件判断,发布时间 <= 当前时间 则显示卡片 源代码:

代码语言:javascript复制
 //获取政策速遞
getList2() {
    // this.isLoad3 = true;
    // noticeType:1通知公告 2政策速遞
    // let noticeType = current == 2 ? 2 : 2;
    var that = this;
    if (that.currentRowCount3 < that.rowCount3) {
      that.status = "nomore";
      return;
    }
    getNoticeList({
      noticeType: 2,
      showAddress: "1",
      current: that.page3,
      rowCount: that.rowCount3,
    })
      .then((res) => {
        // this.dataList3 = res.data.rows;
        let data = res.data.rows;

        // data.forEach((v) => {
        //   that.dataList3.push(v);
        // });
        //当前时间的时间戳
        let currentTime = Date.parse(new Date());
        console.log(currentTime, "当前时间");
        //遍历发布时间的时间戳
        let pudateTime;
        for (let i = 0, length = data.length; i < length; i  ) {
          pudateTime = Date.parse(data[i].pubdate);
          console.log(pudateTime, "发布时间");
          //发布时间 <= 当前时间 则显示卡片
          if (pudateTime <= currentTime) {
            that.dataList3.push(data[i]);//就是这一句我不会写,这句话的意思是dataList3是卡片的绑定数据,卡片push出res.data.rows[i];整个这个for循环就相当于上面那个forEach,因此不用再在里面再循环一遍,外层循环了里面条件满足了,将卡片直接push出来
          }
        }
        that.currentRowCount3 = data.length;
        that.page3  ;
        that.status = "nomore";
        that.isLoad3 = false;
      })
      .catch((error) => {
        console.log(error);
      });
  },

0 人点赞