微信小程序 TODO案例
作者:互联网
源于 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 {
/* 标签:TODO,index,item,todoList,微信,completed,data,案例,todo
来源: https://www.cnblogs.com/linyisonger/p/16508374.html