当前位置:网站首页>微信小程序 TODO案例
微信小程序 TODO案例
2022-07-24 13:44:00 【林一怂儿】
源于 https://ask.csdn.net/questions/7759861 进行了简化。
效果

代码
index.js
Page({
data: {
// 待办列表
todoList: [
{
thing: '洗衣服',
completed: false
},
{
thing: '刷鞋',
completed: false
},
{
thing: '写代码',
completed: false
}
],
// 待办事务
todoThing: ""
},
// 待办点击
todoClick(e) {
// 从wxml传入的点击的索引
let index = e.currentTarget.dataset.index;
this.setData({
// 通过索引进行更改条目
[`todoList[${
index}].completed`]: !this.data.todoList[index].completed
})
},
// 待办输入
todoThingInput(e) {
this.setData({
todoThing: e.detail.value })
},
// 添加按钮
addClick() {
this.setData({
// 再数组最后追加一条
[`todoList[${
this.data.todoList.length}]`]: {
thing: this.data.todoThing,
completed: false
},
// 新增后清空输入框
todoThing: ''
})
},
// 删除按钮
deleteClick(e) {
// 从wxml传入的点击的索引
let index = e.currentTarget.dataset.index;
// 删除todoList索引为index的条目
this.data.todoList.splice(index, 1)
this.setData({
// 对数组重新赋值
todoList: this.data.todoList
})
}
})
index.wxml
<wxs module="tools">
module.exports.getProgress = function (todo) {
var length = todo.length;
var checked = 0;
for (var i = 0; i < todo.length; i++) {
if (todo[i].completed) {
checked++;
}
}
return '完成度:' + (checked / length * 100).toFixed(2) + '%'
}
</wxs>
<view class="todo-completion">{
{tools.getProgress(todoList)}}</view>
<view class="todo-list">
<view class="todo-item" wx:for="{
{todoList}}" wx:key="unique" bindtap="todoClick" data-index="{
{index}}">
<!-- 点击条目增加删除线 -->
<view class="todo-form-label {
{item.completed?'delete-line':''}}">
<radio checked="{
{item.completed}}" /> {
{item.thing}}
</view>
<!-- catchtap阻止冒泡并绑定事件 -->
<view class="todo-delete" catchtap="deleteClick" data-index="{
{index}}">删除</view>
</view>
</view>
<view class="todo-form">
<!-- bindconfirm 点击完成按钮时触发 -->
<input class="form-item" type="text" placeholder="请输入想要做的事情" value="{
{todoThing}}" bindinput="todoThingInput" bindconfirm="addClick" />
<button type="primary" bindtap="addClick">添加</button>
</view>
index.wxss
.todo-form {
padding: 20rpx 60rpx;
}
.todo-form .form-item {
margin-bottom: 40rpx;
font-size: 36rpx;
}
.todo-item .todo-form-label {
/* 阻止原有组件的事件 */
pointer-events: none;
}
.delete-line {
/* 给文字增加删除线 */
text-decoration: line-through;
color: rgba(0, 0, 0, .5);
}
.todo-list {
padding: 30rpx 60rpx;
display: flex;
/* 通过样式来控制从头部追加 */
flex-direction: column-reverse;
}
.todo-list .todo-item {
margin-bottom: 40rpx;
align-items: center;
display: inline-flex;
font-size: 28rpx;
justify-content: space-between;
}
.todo-item .todo-delete {
line-height: 48rpx;
padding: 0 20rpx;
font-size: 28rpx;
color: #ff0000;
}
.todo-completion{
text-align: center;
padding: 20rpx 0;
}
边栏推荐
- 交换机链路聚合详解【华为eNSP】
- Simulate the implementation of the library function memcpy-- copy memory blocks. Understand memory overlap and accurate replication in detail
- R语言使用sort函数排序向量数据实战、返回实际排序后的数据(默认升序)
- Overview of multi view learning methods based on canonical correlation analysis
- Network security - penetration using evil maid physical access security vulnerabilities
- Chapter VI bus
- CSDN garbage has no bottom line!
- [enlightenment -51]: since people are doomed to die, why should they live?
- 简易订单管理系统小练习
- The KAP function of epidisplay package in R language calculates the value of kappa statistics (total consistency, expected consistency), analyzes the consistency of the results of multiple scoring obj
猜你喜欢

Network security - Cookie injection

基于典型相关分析的多视图学习方法综述

Network security - penetration using evil maid physical access security vulnerabilities

软链接、硬链接

From cloud native to intelligent, in-depth interpretation of the industry's first "best practice map of live video technology"

Network security - function bypass injection

网络安全——Web渗透测试

Network security - file upload whitelist bypass

Swarm intelligence collaborative obstacle avoidance method inspired by brain attention mechanism

【无标题】
随机推荐
Simple use and difference of symmetric res, AES and asymmetric RSA (JWT)
NOIP2021 T2 数列
How to configure webrtc protocol for low latency playback on easycvr platform v2.5.0 and above?
Data formatting widget
2022年全国职业院校技能大赛赛项比赛时间、承办校信息统计表(第二批)
Aggregation measurement of robot swarm intelligence based on group entropy
WSDM 22 | 基于双曲几何的图推荐
2021-07-09
脑注意力机制启发的群体智能协同避障方法
R语言使用sort函数排序向量数据实战、返回实际排序后的数据(默认升序)
An error is reported when using activiti to create a database table,
2022.7.22 模拟赛
rhcsa第六次笔记
网络安全——服务漏洞扫描与利用
The scroll bar in unity ugui is not displayed from the top when launching the interface in the game
基于社会媒体数据增强的交通态势感知研究及进展
R language uses the sum function of epidisplay package to calculate the descriptive statistical summary information of the specified variables in dataframe under different grouping variables, visualiz
[acm/ two points] two points clear entry-level explanation
自动化运维之Ansible安装部署
R语言使用epiDisplay包的dotplot函数通过点图的形式可视化不同区间数据点的频率、使用by参数指定分组参数可视化不同分组的点图分布、使用cex.Y.axis参数指定Y轴分组标签文本的大小