也是终于找到了数据可视化的最佳载体, 用小程序来做可视化简直完美. 尤其对于像我这种搞数据的, 数据分析, 数据报表, 可视化一直是一个巨大难题, 当我认识的最终的方案还是要用前端的时候, 感觉还有麻烦, 前端也太卷了, 我就做个图表, 竟然要学各种框架和语法, js, vue, 页面布局等都要学, 还要搞一个后端服务, 还要部署等...确实有点劝退, 但市面上主流的低代码BI产品也都不太行 (不能定制化), 最终想到也许小程序, 是最佳选择.

这里也是对一个常用的 tab 切换功能简单实现, 应用于一些页面报表切换等.

简单实现

  • 通过小程序的 "data-tab" 给每个 tab 块绑定一个标示
  • 再给每个 tab 绑定一个名为 "switchTab" 的 bindtap 事件
  • 当点击触发的时候就能通过 e.currentTarget.dataset.tab 获取到是哪个 tab 被触发
  • 通过 wx:if 或 hidden 结合数据驱动对该内容做一个显示和隐藏(移除)

具体代码如下:

结构部分:

<view>
<view class="tab-container">
<view
class="tab {{currentTab == 'day'? 'active': ''}}"
data-tab="day"
bindtap="switchTab"
>
日度
</view>
<view
class="tab {{currentTab == 'month'? 'active': ''}}"
data-tab="month"
bindtap="switchTab"
>
月度
</view>
<view
class="tab {{currentTab == 'quarter'? 'active': ''}}"
data-tab="quarter"
bindtap="switchTab"
>
季度
</view>
<view
class="tab {{currentTab == 'year'? 'active': ''}}"
data-tab="year"
bindtap="switchTab"
>
年度
</view>
</view>
<view class="tab-content">
<view class="tab-item" wx:if="{{currentTab == 'day'}}">日度数据</view>
<view class="tab-item bg-pink" wx:elif="{{currentTab == 'month'}}">月度数据</view>
<view class="tab-item bg-orange" wx:elif="{{currentTab == 'quarter'}}">季度数据</view>
<view class="tab-item bg-green" wx:else="{{currentTab == 'year'}}">年度数据</view>
</view>
<view class="father">
<view class="son">其他内容区</view>
</view>
</view>

逻辑部分:

Page({
data: {
currentTab: 'day'
}, switchTab(e) {
// console.log('当前点的是: ', e.currentTarget.dataset.tab)
this.setData({
currentTab: e.currentTarget.dataset.tab
})
} })

样式部分:

.tab-container {
margin: 30rpx;
padding-left: 160rpx;
display: flex;
justify-content: center;
}
.tab {
flex: 1;
} .active {
color: #ff7806;
font-weight: 700;
} .tab-content {
background: skyblue;
}
.tab-item {
height: 400rpx;
}
.bg-pink {
background: pink;
}
.bg-orange {
background: orange;
}
.bg-green {
background: greenyellow;
} .father {
display: flex;
justify-content: center;
}
.son {
margin-top: 20rpx;
height: 400rpx;
width: 700rpx;
background: #1ee3cf;
display: flex;
align-items: center;
justify-content: center; }

补充

这里在控制切换的时候, 我用的是 wx:if -> wx:elif -> wx:else . 其实也可以用 hidden 属性, 写法如下:

<view class="tab-item" hidden ="{{currentTab !== 'day'}}">日度数据</view>

wx:if 和 hidden 这两种写法的区别就是就是 display: none 和 display: hidden 而已. 一个是干掉dom不保留, 一个是加载了但隐藏不可见.

对于要频繁切换的建议用 hidden, 但首次加载耗时多; 不咋频繁使用的建议用 wx:if 即可.

在实现方法上, 其实也可以用小程序自带的 swiper 和 scroll-view 组件来实现各种, 看需求, 哪种方便用哪都行.

小程序简单 tab 切换实现的更多相关文章

  1. 微信小程序写tab切换

    微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...

  2. 小程序之Tab切换(二)

    之前写的那个Tab切换是常规逻辑写的,接下来我会列出小程序api自带的写法,当然了 这个写法更加简单,实用.我们只需要配置app.json这个文件即可. 先看效果图: app.json代码:(有木有感 ...

  3. 小程序之 tab切换(选项卡)

    好久没有写东西了   今天写一个简单的东西 小程序tab切换 (选项卡功能) .wxml <view class="swiper-tab"> <view < ...

  4. 小程序之Tab切换

    小程序越来越火了,作为一名,额  有理想的攻城狮,当然要紧跟互联网时代的步伐啦,于是我赶紧抽时间学习了一下小程序的开发,顺便把经验分享给大家. 对于申请账号以及安装开发工具等,大家可以看官网:http ...

  5. 小程序的tab切换事件

    index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...

  6. 微信小程序之tab切换

    .wxml <view class="select_box"> <scroll-view scroll-x="true" style=&quo ...

  7. 微信小程序左右滑动切换页面示例代码--转载

    微信小程序——左右滑动切换页面事件 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend. 这三个事件最重要的属性是pageX和pageY,表示X, ...

  8. 微信小程序滚动tab的实现

    微信小程序滚动tab的实现 1.目的:为了解决滚动版本的tab,以及实现虹吸效果. 2.方案:自己动手写了一个Demo,用于测试实现如上的效果.其代码有做参考,在这里先声明.具体的参照如下:重庆大学二 ...

  9. 微信小程序简单封装图片上传组件

    微信小程序简单封装图片上传组件 希望自己 "day day up" -----小陶 我从哪里来 在写小程序的时候需要上传图片,个人觉得官方提供的 Uploader 组件不是太好用, ...

  10. 微信小程序滚动Tab选项卡:左右可滑动切换

    最终效果如上.问题: 1.tab标题总共8个,所以一屏无法全部显示. 2.tab内容区左右滑动切换时,tab标题随即做标记(active). 3.当active的标题不在当前屏显示时,要使其能显示到当 ...

随机推荐

  1. [HEOI2014]大工程 题解

    发现可以直接建立虚树. 设 \(dp_{u,0/1/2}\) 表示第 \(u\) 个节点的子树内,所有选中节点到它的距离之和/选中节点中到它的最短距离/选中节点中到它的最长距离,\(as_{u,0/1 ...

  2. STM32 DMA操作

    https://blog.csdn.net/u014754841/article/details/79525637?utm_medium=distribute.pc_relevant.none-tas ...

  3. rabbitmq的基本使用

    使用MQ的三大作用:1.同步变异步2.流量削峰3.解耦降低服务间的耦合性要不要使用MQ,需不需要使用MQ依据项目的需要做选择. 使用场景: 例如:注册用户时候,发送激活邮件.监控应用中抛出的异常,邮件 ...

  4. 【ABAQUS Material】density 行为

    1.overview 进行eigenfrequency . transient dynamic analysis. transient heat transfer analysis. adiabati ...

  5. RealityCapture重建试验

    一.使用已有数据集 (一)小型物件(官网) 输入:Camera_Lubitel2_studio "Lubitel Camera" consisting of 72 images 地 ...

  6. mysql存储过程之循环遍历查询结果集

    mysql存储过程之循环遍历查询结果集 -- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除 DROP PROCEDURE IF EXISTS init_reportUrl; -- 创建存储 ...

  7. 使用Istio灰度发布

    目录 灰度发布 1. Istio 1.1 Istio介绍 1.2 Istio是如何工作的 2. 安装Istio 2.1 环境 2.2 得到二进制文件 2.3 安装istio 3. 部署bookinfo ...

  8. ORA-01779: 无法修改与非键值保存表对应的列”中涉及的概念和解决方法

    什么是键值保存表(Key-Preserved Table)? 在理解什么是键值保存表之前,首先要知道 可更新的联接视图 这个概念,键值保存表只是保存了允许更新的字段信息的一张表.为什么会出现这么一张表 ...

  9. 实现领域驱动设计 - 使用ABP框架 - 应用程序服务

    应用程序服务 应用程序服务是一种无状态的服务,它实现应用程序的用例.应用程序服务通常获取和返回dto.它由表示层使用.它使用并协调领域对象(实体.存储库等)来实现用例 应用程序服务的常见原则如下: 实 ...

  10. Zotero 设置坚果云同步(使用 WebDAV 的方法)

    1.坚果云设置 登录坚果云:官网,注册账号 1.建立个人文件夹:zotero 2.在网页打开右上角的 账户信息,并选择 安全选项 在页面下方选择 添加应用 并输入与前面文件夹对应的名称 zotero ...