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

相关推荐
web打印社区18 分钟前
使用React如何静默打印页面:完整的前端打印解决方案
前端·javascript·vue.js·react.js·pdf·1024程序员节
喜欢踢足球的老罗19 分钟前
[特殊字符] PM2 入门实战:从 0 到线上托管 React SPA
前端·react.js·前端框架
小光学长29 分钟前
基于Vue的课程达成度分析系统t84pzgwk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Baklib梅梅2 小时前
探码科技再获“专精特新”认定:Baklib引领AI内容管理新方向
前端·ruby on rails·前端框架·ruby
南方以南_2 小时前
Chrome开发者工具
前端·chrome
YiHanXii2 小时前
this 输出题
前端·javascript·1024程序员节
楊无好2 小时前
React中ref
前端·react.js
维他命Coco2 小时前
js常见开发学习
javascript
程琬清君2 小时前
vue3 confirm倒计时
前端·1024程序员节
麦麦大数据2 小时前
F033 vue+neo4j图书智能问答+知识图谱推荐系统 |知识图谱+neo4j+vue+flask+mysql实现代码
vue.js·flask·nlp·neo4j·智能问答·图书·1024程序员节