uniapp 实现动态多规格数量控制操作

一、目标效果

在这里插入图片描述

  • 规格的数量不确定,即可能还有多个规格。
  • 规格可从服务器读取。
  • 每个规格单独控制加减。
  • 最终可以获得每个规格的所选数量。
二、循环出规格

假设服务器返回的规格数据如下:

"salelist": [
	 {
	     "id": 29,
	     "moviesid": 2,
	     "univalent": "100"
	 },
	 {
	     "id": 30,
	     "moviesid": 2,
	     "univalent": "1000"
	 },
	 {
	     "id": 31,
	     "moviesid": 2,
	     "univalent": "10000"
	 }
 ]

按照数据循环出每个规格:

<div class="buy-item-box" v-for="item in salelist">
	<div class="buy-item-left">
		<text style="font-size: 36rpx;font-weight: bold;text-align: center;height: 150rpx;line-height: 150rpx;">{{item.univalent}}</text>
	</div>
	<div class="buy-item-right">
		<div class="buy-action-btn">
			<image src="../../static/dec-fill.png" style="width: 50rpx;height: 50rpx;" @click="decNum(item.id)" v-if="buyInfo[item.id] > 0"></image>
			<image src="../../static/dec.png" style="width: 50rpx;height: 50rpx;" v-if="buyInfo[item.id] == 0"></image>
		</div>
		<div class="buy-action-btn">
			<text style="text-align: center;color: #7A7474;font-size: 40rpx;">{{buyInfo[item.id]}}</text>
		</div>
		<div class="buy-action-btn">
			<image src="../../static/add-fill.png" style="width: 50rpx;height: 50rpx;" @click="addNum(item.id)"></image>
		</div>
	</div>
</div>

定义初始化数据:

data () {
	return {
		buyInfo: {}
	}
}
三、JavaScript 逻辑
onLoad(e) {
	var _this = this;
	uni.request({
		url: '',
		data: {},
		success: (res) => {
			var salelist = res.data.data.salelist;
			var res = {};
			// 创建初始购买数量信息
			for (let i = 0; i < salelist.length; i++) {
				res[salelist[i].id] = 0;
			}
			_this.buyInfo = res;
		}
	});
}

加方法:

addNum (saleId) {
	var obj = this.buyInfo;
	if (saleId in obj) {
		obj[saleId]++;
	} else {
		obj[saleId] = 1;
	}
}

减方法:

decNum (saleId) {
	var obj = this.buyInfo;
	if (saleId in obj) {
		if (obj[saleId] >= 1) {
			obj[saleId]--;
		}
	} else {
		obj[saleId] = 0;
	}
}

核心思想为利用每个规格的id作为对象的键名,值进行加减。
最终得到的数据效果:

{"29":3, "30":7, "31":1}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

相逢不晚何必匆匆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值