最近好久都没写一点什么了, 除了最近有那么稍稍一点忙之外, 可能最主要的还是这鬼天气, 让人变得太懒了吧. 当然全是天气的锅啦!
最近搞了一个小项目吧, 要求做时间选择器? 先来瞅瞅我们的需求: 时间选择器有三种模式: 日, 周, 月. 然后我指定查看某种模式需要弹出不一样的选择模式. 嗯, 这个月是真的炒鸡简单吧. 至于那个日, 还好吧. 只需要把闰月算出来….. 至于周, 是真的麻烦吧. 啥也不说了, 先瞅瞅最终样式图
Images View
理一下思路
首先, 也就是一个计算属性返回三个数组给picker, 主要的重点在于数据的计算吧, 月份选择么. 不用多说直接1-12, 也就OK, 日期选择么, 也就多一个返回每个月份多少天, 主要重点也就是闰月计算了, 至于周, 我这是首先找到第一个月中的周一, 也就是先new Date(“2019-7”).getUTCDay(), 这样再做判断周一, 然后一直加6天, 每次计算下开始的日期获取下getMonth(), 如果是下一月就结束, 这样每一月的第一个残周给推到上一月去
代码实现
月份选择
首选也就定义一个计算属性, 判断当前的tabInde是月份选择, 给返回两组数据出去
1 | // 初始化一些常用的常量 |
日期选择
月份选择就是那么简答, 接下来实现下日期的选择
1 | ... |
周
数据驱动视图, 真的简化了我们许多事情, 接下来就计算下周吧
1 | // 这里需要用到原生date没有的方法, 对时间的格式化输出 |
结束
基本上就这个样子了, 代码有点乱了, 我自己都有点看不下去的亚子, 不够胜在功能完善, 能够交差了事
还是有需要的不够的地方, 比如我这里没有处理年份, 应该需要处理以下, 从当前的时间到2019年这样拍下去, 不过现在还早嘛, 等着20年元旦再弄啦