微信小程序-TodoList
TodoList
| 博客班级 | https://edu.cnblogs.com/campus/zjcsxy/SE2020 |
|---|---|
| 作业要求 | https://edu.cnblogs.com/campus/zjcsxy/SE2020/homework/11334 |
| 作业目标 | 1. 编写一个小程序,可以全新编写,也可以学习别人的小程序进行修改 2. 熟悉git代码管理流程,将源代码上传到到github 3. 在博客园班级中写一篇相应的博文 |
| 作业源代码 | https://github.com/czwzy2017/WeChat-app-TodoList |
| 学号 | 31801138 |
| 院系 | 浙大城市学院计算分院 |
前言
第一次接触小程序,先从github上下载了一个他人的小程序进行学习。
原小程序GitHub地址:https://github.com/charleslo1/weapp-todo
然后去掉了一些我觉得没啥必要的功能,添加了一个清除已完成功能。
界面展示

文件结构

components/checkbox 勾选框组件
components/todo-item 任务条目组件
models/Todo.js todo数组模块
pages/todo/index 主页面
pages/todo/create 创建任务页面
pages/store/todoStore.js 对todo的一系列操作
功能
读取用户信息
wx.getUserInfo({
success: (res) => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
}
})
当小程序隐藏或退出时,保存数据
onHide() {
todoStore.save()
},
onError() {
todoStore.save()
}
})
长按删除
handleTodoLongTap(e) {
// 获取 index
let index = e.currentTarget.dataset.index
wx.showModal({
title: '删除提示',
content: '确定要删除这项任务吗?',
success: (e) => {
if (e.confirm) {
this.data.todos.splice(index, 1)
this.update()
}
}
})
}

删除所有已完成
handleDeleteTodo(e){
for (var i=0;i<this.data.todos.length;i++){
if ((this.data.todos[i].completed)==true){
this.data.todos.splice(i,1);
i--;
}
}
this.update()
}
首次起用时,会在页面上显示各种操作提示
__init() {
let isInited = wx.getStorageSync('__todos_inited__')
if (isInited) return
this.todos = this.todos.concat([new Todo({
title: '欢迎使用TodoList',
completed: false,
level: 1,
createdAt: new Date()
}), new Todo({
title: '点击左边勾选框完成一项任务',
completed: false,
level: 1,
createdAt: new Date()
}), new Todo({
title: '点击标题可以编辑任务哦',
completed: false,
level: 2,
createdAt: new Date()
}), new Todo({
title: '点击右边日期可修改日期',
completed: false,
level: 3,
createdAt: new Date()
}), new Todo({
title: '点击下面的 + 新建一项任务吧',
completed: false,
level: 4,
createdAt: new Date()
}), new Todo({
title: '点击下面的 - 可以清除所有已完成',
completed: false,
level: 4,
createdAt: new Date()
}), new Todo({
title: '长按可删除任务',
completed: false,
level: 4,
createdAt: new Date()
}),new Todo({
title: '这是一条已完成的任务1',
completed: true,
level: 4,
date: new Date('2017/11/18'),
createdAt: new Date(),
completedAt: new Date('2017/11/18')
}), new Todo({
title: '这是一条已完成的任务2',
completed: true,
level: 4,
date: new Date('2017/11/19'),
createdAt: new Date(),
completedAt: new Date('2017/11/19')
}), new Todo({
title: '这是一条已完成的任务3',
completed: true,
level: 4,
date: new Date('2017/11/20'),
createdAt: new Date(),
completedAt: new Date('2017/11/20')
}), new Todo({
title: '这是一条已完成的任务4',
completed: true,
level: 4,
date: new Date('2017/11/20'),
createdAt: new Date(),
completedAt: new Date('2017/11/20')
})])
this.save()
wx.setStorageSync('__todos_inited__', true)
}
保存数据至本地
save() {
wx.setStorageSync(this.key, this.todos)
}
}
添加计划
Page({
/**
* 页面的初始数据
*/
data: {
// todo
todo: new Todo(),
// 级别
levels: ['紧急且重要', '重要不紧急', '紧急不重要', '不紧急不重要']
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.data.todo = new Todo()
this.update()
},
/**
* 分享
*/
onShareAppMessage: function (options) {
},
/**
* Todo 改变事件
*/
handleTodoItemChange (e) {
let todo = e.detail.data.todo
Object.assign(this.data.todo, todo)
this.update()
},
/**
* 级别改变事件
*/
handleLevelChange(e) {
this.data.todo.level = parseInt(e.detail.value) + 1
this.update()
},
/**
* 描述输入事件
*/
handleDescChange (e) {
this.data.todo.desc = e.detail.value
this.update()
},
/**
* 取消按钮点击事件
*/
handleCancelTap (e) {
wx.navigateBack()
},
/**
* 保存按钮点击事件
*/
handleSaveTap(e) {
todoStore.addTodo(this.data.todo)
todoStore.save()
wx.navigateBack()
},
/**
* 更新数据
*/
update (data) {
data = data || this.data
this.setData(data)
}
})

微信小程序-TodoList的更多相关文章
- 初学微信小程序 TodoList
微信小程序的学习 微信小程序的开始尝试 TodoList 微信开发者工具生成 目录如下: . |-- app.js |-- app.json |-- app.wxss |-- pages | |-- ...
- 近期热门微信小程序demo源码下载汇总
近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...
- 微信小程序学习指南
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 微信小程序的应用及信息整合,都放到这里了
微信小程序终于开始公测了,这篇文章也终于可以发布了. 这篇文章可以说是微信小程序系列三部曲最后一篇.8 月份,小程序推出前,我写了<别开发 app 了>详细阐述了为什么创业应该放弃原生 a ...
- 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...
- 微信小程序 教程及示例
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...
- 微信小程序资料集合
一:官方地址集合: 1:官方工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1476434678461 2: ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 微信小程序开发学习资料
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
随机推荐
- C# Redis分布式锁 - 单节点
为什么要用分布式锁? 先上一张截图,这是在浏览别人的博客时看到的. 在了解为什么要用分布式锁之前,我们应该知道到底什么是分布式锁. 锁按照不同的维度,有多种分类.比如 1.悲观锁,乐观锁; 2.公平锁 ...
- 00 在Windows环境中开发Cordova项目的准备工作
1.开发环境准备: 安装nodejs 安装Cordova 安装Visual Studio Code 安装nodejs步骤: 通过nodejs官网(https:/ ...
- IntelliJ IDEA Commons IO环境搭建
IntelliJ IDEA版本信息 1.打开.或新建工程之后,点击菜单File > Project Structure... 2.在Project Structure窗口中,选Project S ...
- 题解【QTree3】
题目描述 给出N个点的一棵树(N-1条边),节点有白有黑,初始全为白 有两种操作: 0 i : 改变某点的颜色(原来是黑的变白,原来是白的变黑) 1 v : 询问1到v的路径上的第一个黑点,若无,输出 ...
- linux块设备驱动---程序设计(转)
块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为:int register_blkdev(unsigned i ...
- 添加Google网络地图功能
在MeteoInfo中添加了Google网络地图功能.打开MeteoInfo软件,选中图层管理区的一个Map Frame(New Map Frame),点击鼠标右键,在弹出菜单中点击Add Web L ...
- 【UR #12】实验室外的攻防战
UOJ小清新题表 题目内容 依然没有粘题面主要是UOJ的题面都太长了qwq UOJ链接 一句话题意:给出两个序列 \(A\) 和 \(B\),对于 \(A\) 进行若干次操作,每次给出一个 \(i\) ...
- 【迷宫问题】CodeForces 1292A A NEKO's Maze Game
题目大意 vjudge链接 共两行,从(1,n)到(2,n). 每过一个时刻会有一个位置的状态变化,从能到达这个位置变成不能到达,或从不能到达变成能到达,问在每个时刻中是否能从起点到终点. 数据范围 ...
- 国产化即时通信系统开发 -- 实现GGTalk的登录界面(Linux、Ubuntu、UOS、中标麒麟)
距离2013年开源GGTalk以来,7年已经过去了,GGTalk现在有了完整的PC版.安卓版.iOS版(即将发布),以及Xamarin版本. 然而,时代一直在变化,在今天,有个趋势越来越明显,那就是政 ...
- 安卓WebSocket使用
引入jar包: implementation "org.java-websocket:Java-WebSocket:1.4.0"implementation "org.s ...