当前位置: 首页 > news >正文

【小程序】封装时间选择组件:用单元格van-cell和插槽slot,包括起始时间和终止时间

效果

可以选择起始时间和终止时间,并显示。
时间选择器放在van-cell的value插槽中。

在这里插入图片描述
用的库:
https://vant-contrib.gitee.io/vant-weapp/#/home
https://dayjs.fenxianglu.cn/category/

用的组件:Cell单元格、DatetimePicker时间选择、Popup弹出层

"usingComponents": {"van-popup": "@vant/weapp/popup/index","van-cell": "@vant/weapp/cell/index","van-cell-group": "@vant/weapp/cell-group/index","van-datetime-picker": "@vant/weapp/datetime-picker/index"}

代码

HTML

注意,这里的van-cell的value放的是时间选择器,以插槽的形式实现。

根据文档:这里要求用<view slot="">实现value的插槽,而不是<view slot="value"><view slot>

在这里插入图片描述
data-type用来在js方法中得知选择的是开始还是结束的时间。其他属性见文档。

<van-cell-group><van-cell title="销售日期" border="{{ false }}" title-width="60px"><!-- value用slot,不能slot="value",不能slot,必须slot="" --><view slot=""><view class="start timeItem inline-block" bindtap="showPopup" data-type="start">{{ date.start }}</view><view class="end timeItem inline-block" bindtap="showPopup" data-type="end">{{ date.end }}</view></view></van-cell>
</van-cell-group>

CSS

  .inline-block {/*让它们一行*/display: inline-block;}.timeItem {/*加点边框、间距*/margin: 0 4px;border: 1px solid #888;padding: 0 8px;}

JavaScript

会用到dayjs库。

data() {return {showPop: false,dataType: '',//选择的时间是开始还是结束date: {start: dayjs().format('YYYY-MM-DD'),end: dayjs().format('YYYY-MM-DD')},currentDate: new Date().getTime(),//在时间选择器选择的时间minDate: new Date().getTime()}
},
methods: {//弹出showPopup(e) {this.showPop = true//在弹出框后得知是开始/结束this.dataType = e.currentTarget.dataset.type},//关闭colsePopup() {this.showPop = false},//选择的时间赋值timeInput(event) {this.currentDate = event.detail},//点击“确认”后timeConfirm() {// currentDate是时间戳(毫秒)if (this.dataType === 'start') {this.date.start = dayjs(this.currentDate).format('YYYY-MM-DD')} else {this.date.end = dayjs(this.currentDate).format('YYYY-MM-DD')}this.colsePopup()}}

其他

这个功能感觉很常见,记录一下。
只是记录自己敲码的过程,水平很烂。
功能并不完善,比如没有end必须>=start的判断等。

http://www.lryc.cn/news/89106.html

相关文章:

  • 华为OD机试真题B卷 Java 实现【猜密码】
  • 沉淀-MYSQL
  • OJ练习第116题——二进制矩阵中的最短路径(BFS)
  • 2023上半年软件设计师真题评析
  • (汇编) 基于VS的x86汇编基础指令
  • 算法Day16 | 104.二叉树的最大深度,559.n叉树的最大深度, 111.二叉树的最小深度,222.完全二叉树的节点个数
  • java设计模式之责任链设计模式的前世今生
  • 是面试官放水,还是公司太缺人了?华为原来这么容易就进了...
  • PLC/DCS系统常见的干扰现象及判断方法
  • c++ 11标准模板(STL) std::map(四)
  • 6.开源非对称加密算法SM2实现
  • Toolformer and Tool Learning(LLMs如何使用工具)
  • 029:Mapbox GL绘制铁路黑白交替的线段
  • 结对编程 --- 大部分程序员喜欢的编程方式
  • kubernetes-informer机制
  • LeetCode 2451. Odd String Difference【字符串,哈希表】简单
  • 切片工具tippecanoe的全网最详细的解释
  • Linux系统初始化命令的备忘单,Linux运维工程师收藏!
  • 五月最近一次面试,被阿里P8测开虐惨了...
  • 工业机器视觉缺陷检测工作小结
  • 技术笔记:默默耕耘,赢得铁粉的秘密策略!
  • 回收站中怎么找回误删除的文件?这几种方法很实用
  • Gateway网关参数进行验签POST 包含requestbody 请求体封装
  • 【Netty】字节缓冲区 ByteBuf (六)(上)
  • Python - 面向对象编程 - 实例方法、静态方法、类方法
  • 性能测试——基本性能监控系统使用
  • JavaCollection集合
  • C++中string的用法
  • 目标检测YOLO实战应用案例100讲-基于深度学习的交通场景多尺度目标检测算法研究与应用
  • 面试:vue事件绑定修饰符