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

小程序样例3:根据日历创建待办事项

基本功能

1、待办事项查看

选择不同的日期显示不同的待办:

2、选择日期后 新增事项:

3. 点击事项,查看详情

4、删除事项:删除事项3之后,剩余事项2

5、点击日期可以选择更多的月:

实现思路:

1、数据结构:

{     level: 1, _id: 1,title: '事项1',content: '内容1',year: 2024,month: 1,date: 23,addDate: '2024-01-20'
}

2、代码结构:

DataService 是服务层接口,业务JS代码与之打交道

同时Service调用Repository接口,实现数据的增加、删除、查询

例如查询当天的待办:

业务JS层代码:调用DataService.findByDate

function loadItemListData() {console.log('loadItemListData')console.log(this.data.data.selected)const {year, month, date} = this.data.data.selected;let _this = this;DataService.findByDate(new Date(year, month, date)).then((data) => {if(data) {_this.setData({ itemList: data });} else {console.log('findByDate get data empty')}});}

Service层代码:调用DataRepository.findBy

static findByDate(date) {console.log('in findByDate year:' + date.getFullYear() + ' month:' + date.getMonth() + ' day:' + date.getDate())if (!date) {return []} ;console.log('before findBy')return DataRepository.findBy(item => {console.log('current item year:' + item['year'] + ' month:' + item['month'] + ' date:' + item['date']);console.log(item);return item && item['date'] == date.getDate() &&item['month'] == date.getMonth() &&item['year'] == date.getFullYear();}).then(data => data);}

Repository层代码:

static findBy(predicate) {console.log('in findBy');return DataRepository.findAllData().then((data) => {console.log('in findBy result');if (data) {data = data.filter(item => predicate(item));console.log('after filter');console.log(data)return data;} else {console.log('data is empty:' + data)}return data;});}

代码使用Promise风格 简化了callback的方式

踩坑记录:

1、通过选中的年月日,构造Date对象时,调用getDay()获取星期的时候,不正确。

需要将month-1

参考:js getday()获取值不对_dayjs().get('day') 时间不对-CSDN博客

2、promise运用不熟练,有些地方需要return

参考:微信小程序Promise详解_笔记大全_设计学院

 比如此处:如果没有return,调用findAllData后续then的时候拿不到data值

完整代码下载:

 https://download.csdn.net/download/u200814342A/88778500

 

个人小程序创业项目   #小程序://朋友圈子/VMEWRjrOTum4Soa  有想法的朋友可以一起交流下~

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

相关文章:

  • 计算机设计大赛 协同过滤电影推荐系统
  • docker下安装rabbitmq
  • 量子网络是什么
  • 使用javadoc生成maven项目的文档
  • 移动端 h5-table react版本支持虚拟列表
  • 解决Windows系统本地端口被占用的问题
  • (超全七大错误)Invalid bound statement (not found): com.xxx.dao.xxxDao.add
  • 【操作系统】实验八 proc文件系统
  • 基于RMF的信贷风控标签客户分层管理
  • 【MySQL】如何通过DDL去创建和修改员工信息表
  • Spring 事务原理一
  • creo草绘3个实例学习笔记
  • Modern C++ std::move的实现原理
  • 爬虫工作量由小到大的思维转变---<第四十章 Scrapy Redis 实现IP代理池管理的最佳实践>
  • C# 实现 XOR 密码
  • 【Web前端开发基础】CSS3之空间转换和动画
  • Go实现一个简单的烟花秀效果(附带源码)
  • 【数学建模】插值与拟合
  • 全卷积网络:革新图像分析
  • ubuntu20.04 格式化 硬盘 扩展硬盘GParted
  • docker的资源限制(cgroup)
  • ChatGPT与文心一言:应用示例与体验比较
  • 紫光展锐T760_芯片性能介绍_展锐T760安卓核心板定制
  • 从动力系统研究看当今数学界
  • 【征服redis15】分布式锁的功能与整体设计方案
  • MATLAB中实现机械臂逆运动学求解的方法之一是使用阻尼最小二乘法
  • 2024.1.24 GNSS 学习笔记
  • 2024-01-22(MongoDB)
  • 无人机航迹规划(六):七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)
  • 《WebKit 技术内幕》学习之十二(2):安全机制