uniapp实现---类似购物车全选

目录

一、实现思路

二、实现步骤

①view部分展示

[②JavaScript 内容](#②JavaScript 内容)

③css中样式展示

三、效果展示

[四、小结 + 注意事项](#四、小结 + 注意事项)


一、实现思路

点击商家复选框,可选中当前商家下的所有商品。点击全选,选中全部商家的商品

添加单个多选框,在将多选框绑定到全选按钮上。

uniapp内置的checkbox以及checkbox-group:

无法依赖其事件实现全选,样式固定,难以修改。

二、实现步骤

①view部分展示

html 复制代码
<view>
		<view class="checkboxAll">
			<u-checkbox-group @change="selectAll">
				<u-checkbox :checked="allChecked" shape="circle" activeColor="#FF6C47"></u-checkbox><text style="color: #FF6C47;">全选</text>
			</u-checkbox-group>
		</view>
		<template v-for="(item,index) in itemsList">
			<view class="uni-list" style="padding: 32rpx" :key="index">
				<view class="flex-between">
					<view class="flex">
						<checkbox-group @change="changeitem(item)" checked class="checkbox" >
							<u-checkbox :value="item.name" :checked="item.checked" shape="circle" activeColor="#FF6C47"/>
						</checkbox-group>

						<view class="flex-colomn" style="margin-left: 16rpx;">
							<view style="font-size: 32rpx;color: #1A1A1A;">{{item.name}}</view>
							<view style="ont-size: 24rpx;color: #666666;margin-top: 8rpx;"><text
									style="ont-size: 24rpx;color: #666666;">学号:</text>{{item.number}}</view>
						</view>
					</view>
					<view class="flex">
						<view style="font-size: 36rpx;color: #1A1A1A;">{{item.num}}</view>
						<view style="margin-left: 16rpx;">
							<u-icon name="arrow-right" size="15" color="#999999"></u-icon>
						</view>
					</view>
				</view>
			</view>
		</template>
	</view>

②JavaScript 内容

html 复制代码
<script>
	export default {
		data() {
			return {
				checkList: [], //选中值
				allChecked: false, //是否全选
				title: 'checkbox 复选框',
				itemsList: [{
					name: '美国',
					number: "20030303",
					num: "90",
					checked: false
				}, {
					name: '美国',
					number: "20030303",
					num: "90",
					checked: false
				}, {
					name: '美国',
					number: "20030303",
					num: "90",
					checked: false
				}, {
					name: '美国',
					number: "20030303",
					num: "90",
					checked: false
				}, ]
			}
		},
		methods: {
			//单选
			changeitem(item) {
				item.checked = !item.checked
				if (!item.checked) {
					this.allChecked = false
				} else {
					// 判断每一个列表是否是被选择的状态
					const cartList = this.itemsList.every(item => {
						return item.checked === true
					})
					if (cartList) {
						this.allChecked = true
					} else {
						this.allChecked = false
					}
				}
			},

			//全选,全不选
			selectAll() {
				this.allChecked = !this.allChecked
				if (this.allChecked) {
					this.itemsList.map(item => {
						item.checked = true
					})
				} else {
					this.itemsList.map(item => {
						item.checked = false
					})
				}
			},
		},
	}
</script>

③css中样式展示

css 复制代码
<style lang="scss" scoped>
	.checkboxAll {
		margin-left: 80%;
		margin-top: 24rpx;
	}

	.uni-list-cell {
		justify-content: flex-start;
	}

</style>

三、效果展示

可以全部选择的状态,也可以是单选状态。

四、小结 + 注意事项

u-checkbox-group标签中u-checkbox没有插槽,不支持在里面写内容,必须在u-checkbox-group外面写内容布局。u-checkbox-group--->u-checkbox是可以实现的。

相关推荐
凌涘15 小时前
JS 八大基本类型:一场内存视角的冒险之旅
前端·javascript
心之所向vjuif15 小时前
使用 Gemini 解决前端代码报错问题
前端
数据知道15 小时前
视觉伪装(上):Canvas 指纹生成原理与 Skia 图形库底层注入噪声
开发语言·javascript·ecmascript·数据采集·指纹浏览器
文阿花15 小时前
Echarts实现自定旋转3D饼状图
javascript·3d·echarts·饼状图
San813_LDD15 小时前
[深度学习] 数据序列化格式对比:以日志级别配置为例
xml·java·前端
meilindehuzi_a16 小时前
深入理解 JavaScript 的同步与异步机制:从单线程设计到 Promise 核心应用
开发语言·javascript·ecmascript
如烟花的信页16 小时前
加速乐cookie逆向分析
javascript·爬虫·python·js逆向
永远的WEB小白16 小时前
css改变svg图标的颜色
前端·javascript·css
lfwh16 小时前
探针程序技术解析:基于 Spring Boot 非 Web 模式的云服务监控告警系统
前端·spring boot·后端
Ajie'Blog16 小时前
AI 周报 | Claude Opus 4.8、Copilot Agent 和 Codex 工作流加速
前端·人工智能·gpt·ai·copilot·ai编程