【Vue项目复习笔记】TabControl点击切换商品

我们之前在

<goods-list :goods="goods['pop'].list"></goods-list>

直接传入的是pop,已经写死了,但是在实际应用中,这里应该是一个变量。我们应该动态的来决定是哪一个类型。
首先的话,我们需要内部监听点击,之前我们内部也监听点击了,但是并没有将内部发生点击这个事件传递到外面去。
我们在TabControl中的

 methods: {
    itemClick(index) {
      // 点击后把index传给 currentIndex
      this.currentIndex = index;
      //因为我们要监听点击,要将我们点击的下标传出去
      this.$emit('tabClick', index)
     }
  }

在Home.vue中接收这个点击事件

  <tab-control  :titles="['流行','新款','精选']" @tabClick="tabClick"></tab-control>

先在data中默认一个当前类型为pop

  data(){
    // 这个用来存储上面请求过来的数据,因为上面请求是一个局部变量,请求完了以后,会有垃圾回收机制发挥作用,所以我们需要添加变量用来保存它
    return{
      banners:[],
      recommends:[],
      goods: {
        'pop':{page:0,list:[]},
        'new':{page:0,list:[]},
        'sell':{page:0,list:[]},
      },
      //默认当前类型为type
      currentType:'pop'
    }
  },

在methods中:如果index为0的话,默认它的currentType=‘pop’

 tabClick(index) {
        switch (index){
          case 0:
            this.currentType='pop'
            break
          case 1:
            this.currentType='new'
            break
          case 2:
            this.currentType='sell'
            break
        }
      },

然后在Home.vue中

  <goods-list :goods="goods[currentType].list"></goods-list>

因为上面:goods后面一大串,带着不太好看,我们将其再进行一个处理

 computed:{
    showGoods(){
      return this.goods[this.currentType].list
    },
  },

然后

  <goods-list :goods="showGoods"></goods-list>

将默认的pop换成currentType完成点击切换商品的操作,效果如下:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纵有千堆雪与长街

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值