uni-app:实现表格多选及数据获取

这篇具有很好参考价值的文章主要介绍了uni-app:实现表格多选及数据获取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 效果:

uni-app:实现表格多选及数据获取,uni-app,uni-app

uni-app:实现表格多选及数据获取,uni-app,uni-app 文章来源地址https://www.toymoban.com/news/detail-624141.html

 代码:

<template>
	<view>
		<scroll-view scroll-x="true" style="overflow-x: scroll; white-space: nowrap;">
			<view class="table">
				<view class="table-tr">
					<view class="table-th1">
						<checkbox-group @tap="checkAll">
							<checkbox :checked="allChecked" />
						</checkbox-group>
					</view>
					<view class="table-th2">姓名</view>
					<view class="table-th2">年龄</view>
					<view class="table-th3">地点</view>
				</view>

				<view class="table-tr" v-for="(item, index) in list" :key="index">
					<view class="table-td1">
						<checkbox-group @change="checkClick(item)">
							<checkbox :checked="item.checked" />
						</checkbox-group>
					</view>
					<view class="table-td2">{{item.name}}</view>
					<view class="table-td2">{{item.age}}</view>
					<view class="table-td3">{{item.address}}</view>
				</view>
			</view>
		</scroll-view>
		<view>
			<text>数组数据</text>
			<view>{{selectedData}}</view>
		</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				selectedData: [],
				allChecked: false,
				inputs: "",
				list: [{
						name: "张三",
						age: 21,
						checked: false,
						address: '波兰斯维诺乌伊希切',
					},
					{
						name: "李四",
						age: 22,
						checked: false,
						address: '冰岛尼斯湖',
					},
					{
						name: "王五",
						age: 23,
						checked: false,
						address: '云南西双版纳',
					},
					{
						name: "赵六",
						age: 41,
						checked: false,
						address: '阿尔卑斯雪山',
					},
				],
			}
		},
		methods: {
			// 单个的选择
			checkClick(item) {
				item.checked = !item.checked
				// console.log(item)
				if (item.checked) {
					this.selectedData.push(item);
				} else {
					const index = this.selectedData.findIndex(data => data === item);
					if (index !== -1) {
						this.selectedData.splice(index, 1);
					}
				}
				if (!item.checked) {
					this.allChecked = false
				} else {
					// 判断单个是否是被选择的状态
					const goods = this.list.every(item => {
						return item.checked === true
					})
					if (goods) {
						this.allChecked = true
					} else {
						this.allChecked = false
					}
				}
				console.log(this.selectedData)
			},
			//全选与全不选
			checkAll() {
				this.allChecked = !this.allChecked;
				if (this.allChecked) {
					this.list.map(item => {
						item.checked = true;
						if (!this.selectedData.includes(item)) {
							this.selectedData.push(item);
						}
					});
				} else {
					this.list.map(item => {
						item.checked = false;

						const index = this.selectedData.findIndex(data => data === item);
						if (index !== -1) {
							this.selectedData.splice(index, 1);
						}
					});
				}
				console.log(this.selectedData)
			}
		}
	}
</script>
<style>
	/* 表格样式 */
	.table {
		margin-top: 5%;
		font-size: 85%;
		display: table;
		width: 200%;
		border-collapse: collapse;
		box-sizing: border-box;
	}

	.table-tr {
		display: table-row;
	}

	.table-th1 {
		width: 5%;
		display: table-cell;
		font-weight: bold;
		border: 1rpx solid gray;
		background-color: #51aad6;
		text-align: center;
		vertical-align: middle;
		padding: 10rpx 0;
		overflow: hidden;
		text-overflow: ellipsis;
		word-break: break-all;
	}

	.table-th2 {
		width: 20%;
		display: table-cell;
		font-weight: bold;
		border: 1rpx solid gray;
		background-color: #51aad6;
		text-align: center;
		vertical-align: middle;
		padding: 10rpx 0;
		overflow: hidden;
		text-overflow: ellipsis;
		word-break: break-all;
	}

	.table-th3 {
		width: 50%;
		display: table-cell;
		font-weight: bold;
		border: 1rpx solid gray;
		background-color: #51aad6;
		text-align: center;
		vertical-align: middle;
		padding: 10rpx 0;
		overflow: hidden;
		text-overflow: ellipsis;
		word-break: break-all;
	}

	.table-td1 {
		width: 5%;
		display: table-cell;
		border: 1rpx solid gray;
		text-align: center;
		vertical-align: middle;
		padding: 10rpx 0;
		overflow: hidden;
		text-overflow: ellipsis;
		word-break: break-all;
	}

	.table-td2 {
		width: 20%;
		display: table-cell;
		border: 1rpx solid gray;
		text-align: center;
		vertical-align: middle;
		padding: 10rpx 0;
		overflow: hidden;
		text-overflow: ellipsis;
		word-break: break-all;
	}

	.table-td3 {
		width: 50%;
		display: table-cell;
		border: 1rpx solid gray;
		text-align: center;
		vertical-align: middle;
		overflow: hidden;
		text-overflow: ellipsis;
		word-break: break-all;
		/* padding: 5px 0; */
	}
</style>

到了这里,关于uni-app:实现表格多选及数据获取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包