通过数据驱动Swiper-item与tab菜单的关联

246 阅读1分钟

研究目标:

在我们使用微信小程序时,我们发现经常碰到使用菜单按键来切换swiper页。如下所示

302e34b8-b07a-47ac-a62a-5a774561a804.gif

那么我们如何实现tabswiper-item的绑定呢?

代码实现

首先我们在page页的js文件内的data中设置声明变量tab

image.png

然后在wxml文件中的tab子项目中绑定tab赋值函数selectTab,再为子项目设置不同的tab的值。

image.png

接着在js中声明selectTab函数并打印值。

image.png

打印结果:

image.png

我们可以看到e.currentTarget.dataset.tab的值,再通过this.Dataset存到data中的tab中。

image.png

为了能够直观的看到我们选择的键,在这里实现选中的效果。

image.png

tab写一个隐藏的类,通过tab的值来判断该盒子的类是否为空

image.png

image.png

接着我们在swiper中绑定tab的值,以及我们需要在swiper切换时也能反映到tab上。所以我们这里也绑定一个tab赋值函数daTabChange

image.png

js中声明函数daTabChange,并打印

image.png

image.png 可以看到a.detail.current的值成功打印,再通过this.Dataset存到data中的tab中。

image.png

这时就实现的tabswiper-item的关联。

完整代码

html:

 <view class="page_hd">
    <view class="zh_tab">
      <view class="zh_tab__item" 
      bindtap="selectTab" data-tab="0">
        <view class="{{tab == 0 ? 'zh_tab__item-on': ''}}">热榜</view>       
      </view>
      <view class="zh_tab__item"
      bindtap="selectTab" data-tab="1">
        <view class="{{tab == 1 ? 'zh_tab__item-on': ''}}">推荐</view>
      </view>
    </view>
  </view>
  <view class="page_bd">
    <swiper current="{{tab}}" bindchange="doTabChange">
      <swiper-item>
        热榜页
      </swiper-item>
      <swiper-item>
        推荐页
      </swiper-item>
    </swiper>
  </view>

css:

.page_hd {
  height: 6vh;
  background-color: #ffffff;
}
.page_bd {
  height: 84.333vh;
}

.zh_tab {
  display: flex;
  height: 100%;
}
.zh_tab__item {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #626262;
}
.zh_tab__item-on {
  color: #000000;
}

最终效果

93da564b-7369-4b13-a4bc-8930197ebe72.gif