uni、js——点击与禁用(不可点击)、动态样式class

案例

没约满的时间可以点击进行选择,约满的就不能选择了。选择完之后变色变字。

核心思想就是创建一个第三方变量存起来,点击谁就存到第三方,在根据这个进行判断。

代码

javascript 复制代码
<template>
	<view class="content">
		<view class="list">
			<block v-for="(item,index) in list" :key="index">
				<view @click="change(item)" :class="{
					'item':true,
					'orangeBg': item.id === checkMonth.id,
					'garyBg': item.display===0,
					'blueBg': item.display===1}">
					<view>{{item.time}}</view>
					<!-- 写法一 -->
					<!-- <view>{{item.id === checkMonth.id?'已选择':item.display == 0?'约满':'可约'}}</view> -->
					<!-- 写法二 -->
					<view v-if="item.id === checkMonth.id">已选择</view>
					<view v-else>{{item.display == 0?'约满':'可约'}}</view>
				</view>
			</block>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				type: 1,
				list: [ {
					id: 1,
					time: "00:30",
					display: 1
				}, {
					id: 2,
					time: "01:00",
					display: 0
				}, {
					id: 3,
					time: "01:30",
					display: 1
				}, {
					id: 4,
					time: "02:00",
					display: 1
				}, {
					id: 5,
					time: "02:30",
					display: 1
				},{
					id: 6,
					time: "03:00",
					display: 0
				}],
				checkMonth: {}, //·选中的年月份
			}
		},
		onLoad(options) {
			this.type = options.type
		},
		methods: {
			change(item) {
				if (!item.display) {
					uni.showToast({
						title:"不可点击,点击也没效果",
						icon:'error',
						duration:400
					})
					return
				}
				console.log("可点击");
				this.checkMonth = item //当前选中的模块
				console.log(this.checkMonth);
			}
		}
	}
</script>

<style>
	.list {
		width: 800rpx;
		display: flex;
		align-items: center;
		flex-wrap: wrap;
	}

	.item {
		width: 200rpx;
		height: 200rpx;
		border: 1px solid red;
	}

	.grayBg {
		background-color: #cccccc;
	}

	.blueBg {
		background-color: skyblue;
	}

	.orangeBg {
		background-color: #FE9202;
	}
</style>

点击与禁用

javascript 复制代码
if (!item.display) {
	uni.showToast({
		title:"不可点击,点击也没效果",
		icon:'error',
		duration:400
	})
	return
}

点击之后,满足禁用条件直接return

动态样式

javascript 复制代码
:class="{
	'item':true,
	'orangeBg': item.id === checkMonth.id,
	'garyBg': item.display===0,
	'blueBg': item.display===1
}"
值为true的代表,这个样式一直存在【比如该item样式内含宽高等的固定样式】
2、3、4行为 满足条件的即显示对应的样式
相关推荐
不是吧这都有重名14 分钟前
利用systemd启动部署在服务器上的web应用
运维·服务器·前端
霸王蟹15 分钟前
React中巧妙使用异步组件Suspense优化页面性能。
前端·笔记·学习·react.js·前端框架
Maỿbe24 分钟前
利用html制作简历网页和求职信息网页
前端·html
森叶44 分钟前
Electron 主进程中使用Worker来创建不同间隔的定时器实现过程
前端·javascript·electron
霸王蟹1 小时前
React 19 中的useRef得到了进一步加强。
前端·javascript·笔记·学习·react.js·ts
霸王蟹1 小时前
React 19版本refs也支持清理函数了。
前端·javascript·笔记·react.js·前端框架·ts
繁依Fanyi1 小时前
ColorAid —— 一个面向设计师的色盲模拟工具开发记
开发语言·前端·vue.js·编辑器·codebuddy首席试玩官
codelxy1 小时前
vue引用cesium,解决“Not allowed to load local resource”报错
javascript·vue.js
程序猿阿伟2 小时前
《社交应用动态表情:RN与Flutter实战解码》
javascript·flutter·react native
明似水2 小时前
Flutter 开发入门:从一个简单的计数器应用开始
前端·javascript·flutter