当前位置:网站首页>微信小程序 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;
}
边栏推荐
- Error reported when using activiti to create a database table
- Recommended idling tools | comprehensive comparison of 10 spatial transcriptome deconvolution tools
- [enlightenment -51]: since people are doomed to die, why should they live?
- Packet switching and label switching in MPLS
- Happy number ~ ~ ~ (in fact, I'm not happy at all) & ugly number
- Bayesian width learning system based on graph regularization
- Network security - file upload whitelist bypass
- Gradle 15 minute introductory tutorial
- 【无标题】
- WSDM 22 | 基于双曲几何的图推荐
猜你喜欢

群体知识图谱:分布式知识迁移与联邦式图谱推理

Explain the edge cloud in simple terms | 2. architecture

Network security - function bypass injection

简易订单管理系统小练习

How to generate expected data? Emory University and others' latest "deep learning controllable data generation" review, 52 page PDF, covering 346 documents, comprehensively expounds the controllable g

网络安全——中间人攻击渗透测试

网络安全——文件上传黑名单绕过

户外广告牌不能“想挂就挂”!广州城管部门加强户外广告安全管理

网络安全——使用Evil Maid物理访问安全漏洞进行渗透

How to quickly wrap lines in Excel table
随机推荐
Hcip day 13
网络安全——报错注入
22-07-23周总结
How to verify the domain name after applying for SSL digital certificate?
为什么函数式接口 Comparator 中有 “两个抽象方法”?
Flink综合案例(九)
Network security - file upload whitelist bypass
【无标题】
Flink综合案例(九)
基于典型相关分析的多视图学习方法综述
[acm/ two points] two points clear entry-level explanation
Network security -- Service Vulnerability scanning and utilization
Browser failed to get cookies, browser solution
数据类型二进制字符串类型
Dtcloud uses custom fonts
FlinkTable&SQL(七)
Kunyu(坤舆) 安装 详解
交换机链路聚合详解【华为eNSP】
Group knowledge map: distributed knowledge transfer and federated map reasoning
户外广告牌不能“想挂就挂”!广州城管部门加强户外广告安全管理