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是可以实现的。

相关推荐
小白_ysf2 分钟前
Vue 中常见的加密方法(对称、非对称、杂凑算法)
前端·vue.js·算法
2501_944448001 小时前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
人工智能训练6 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪7 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9228 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233228 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882110 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas13610 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠10 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_9498333910 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter