微信小程序todolist


文章目录

前言

一个小程序小白


代码部分

代码如下:wxml

<view class="header">
	<input type="text" value="{{val}}" bindconfirm="add" name="" id="" />
</view>
<view class="top">
	<view class="zhengzai">正在进行<text>{{num1}}</text></view>
	<view class="nav" wx:for="{{list}}" hidden="{{item.chec}}">
		<checkbox bindtap="change" data-index="{{index}}" checked="{{item.chec}}"></checkbox><text>{{item.name}}</text><text class="right" bindtap="del" data-i="{{index}}">—</text>
	</view>
</view>
<view class="top">
	<view class="zhengzai">已经完成<text>{{num2}}</text></view>
	<view class="nav" wx:for="{{list}}" hidden="{{!item.chec}}">
		<checkbox bindtap="change" data-index="{{index}}" checked="{{item.chec}}"></checkbox><text>{{item.name}}</text><text class="right" bindtap="del" data-i="{{index}}">—</text>
	</view>
</view>

代码如下(示例):wxss以及js

.header {
	width: 100%;
	line-height: 70rpx;
}

.top {
	font-weight: 900;
}

input {
	width: 50%;
	margin: 0 auto;
	border: 1px solid black;
}

.zhengzai {
	display: flex;
	justify-content: space-between;
	margin: 20rpx;
	font-size: 26px;
	font-weight: 900;
}

.nav {
	margin: 15rpx;
}

.right {
	display: inline-block;
	float: right;
	width: 50rpx;
	text-align: center;
	height: 50rpx;
	background-color: brown;
	border-radius: 50%;
}
Page({
	data: {
		val: '', //input框的内容
		num1: 0, //正在进行的长度
		num2: 0, //已经完成的长度
		list: wx.getStorageSync('list') || [], //把存储在store中的数据拿过来如果没有就是一个数组
	},
	count() { //自定义一个方法判断长度
		//let的两个变量接收数据
		let n1 = 0
		let n2 = 0
		this.data.list.forEach(item => { //将拿到的数据循环遍历
			if (item.chec === false) { //判断复选框是否选中
				n1 += 1 //没有选中的
			} else {
				n2 += 1 //选中的
			}
		});
		this.setData({ //更新视图
			//赋值
			num1: n1,
			num2: n2
		})
	},
	add(e) { //添加
		console.log(e);
		//let 一个数据判断
		let flag=false
		let val = e.detail.value
		if(val==''){//判空
			wx.showToast({
				title: '不能为空',
			})
			flag=true
		}
		this.data.list.forEach(item => {//判重
			if (item.name === val) {
				wx.showToast({
					title: '已经有这个事件了',
				})
			flag=true
			}
		})
		if(flag!=true){
		//如果满足条件就添加
			let obj = {
				chec: false, //复选的属性值
				name: val //输入的数据
			}
			console.log(obj);
			this.data.list.push(obj) //将输入的数据添加到数组中
		}
		this.setData({ //更新视图
			list: this.data.list,
			val: '' //input框为空
		})
		this.count()//调用计数的方法重新计算
		wx.setStorageSync('list', this.data.list)//添加到store中
	},
	del(e) {//删除
		console.log(e);
		let i = e.currentTarget.dataset.i//获取下标
		console.log(i);

		this.data.list.splice(i, 1)//删除一个
		this.setData({//更新视图
			list: this.data.list
		})
		this.count()//调用计数的方法重新计算
		wx.setStorageSync('list', this.data.list)//添加到store中

	},
	change(e) {
		let i = e.currentTarget.dataset.index//获取下标
		this.data.list[i].chec = !this.data.list[i].chec//切换数据
		this.setData({//更新视图
			list: this.data.list
		})
		this.count()//调用计数的方法重新计算
		console.log(this.data.list);//添加到store中
	},
	onLoad: function (options) {
		this.count()//开始加载时就开始计数

	}
})


总结

这个案例用到了数组的添加与删除,小程序数据双向绑定以及dom的显示与隐藏

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俺不想搬砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值