记录一个 uniapp-checkbox 如何动态改变勾选状态

场景:未勾选状态下用户点击勾选框,弹出确认和取消,点击确定则默认勾选,点击取消,恢复成不勾选状态。
一般是这么做:

<checkbox-group @change="checkboxChange" name="limitarea" >
	<label>
		<checkbox value="1" :checked="limitArea"/>
		<text>限定地区</text>
	</label>
</checkbox-group>

<script>
	export default {
		data() {
			return {
				limitArea:0
			}
		},
		methods: {
			checkboxChange: function(e){
				var self = this;
				if( e.detail.value.length > 0 ){
					uni.showModal({
						title: '限定地区',
						content: '限定地区,可能需要等待较长时间',
						confirmText: "确定",
						cancelText: "取消",
						success: function (res) {
							if (res.confirm) {
								self.limitArea = 1;
							}else{
								self.limitArea = 0;
							}
						}
					});
				}else{
					this.limitArea = 0;
				}
			}
		},
		components: {}
	}
</script>

上面的:checked="limitArea" ,显示状态与limitArea 进行了绑定。但是发现虽然点击了取消, limitArea 值变成了0,按道理勾选框应该为不勾选,但是显示的勾选状态还是选中状态。什么原因我没弄明白,解决办法:

checkboxChange: function(e){
				var self = this;
				if( e.detail.value.length > 0 ){//点击勾选
				
					self.limitArea = 1;  // *****加上这句代码*******
					
					uni.showModal({
						title: '限定地区',
						content: '限定地区,可能需要等待较长时间',
						confirmText: "确定",
						cancelText: "取消",
						success: function (res) {
							if (res.confirm) {
								self.limitArea = 1;
							}else{
								self.limitArea = 0;
							}
						}
					});
				}else{
					this.limitArea = 0;
				}
			}

场景二:
点击勾选,但我们不希望勾选,强制恢复成不勾选状态。直接改变limitArea值也是不生效的,解决方法:弹出提示,由用于点击确定,在确定里改变值就可以了,但还是要注意场景一的问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
uniapp一个基于Vue.js的跨平台开发框架,可以用于开发iOS、Android、H5等多个平台的应用程序。u-checkbox-group和u-checkboxuniapp中的两个组件,用于实现多选功能和数据回显。 u-checkbox-group是一个多选框组的容器,可以包含多个u-checkbox组件。它通过v-model绑定一个数组来实现数据的双向绑定。当用户选择或取消选择某个u-checkbox时,对应的数据会自动添加或移除到绑定的数组中。 u-checkbox一个单个的多选框,可以通过v-model绑定一个布尔值来表示是否选中。当用户选择或取消选择该多选框时,绑定的布尔值会自动更新。 要实现数据回显,首先需要在data中定义一个数组来存储选中的数据。然后,在u-checkbox-group中使用v-model绑定该数组。当需要回显数据时,只需要将对应的数据添加到数组中即可。 以下是一个示例代码: ``` <template> <view> <u-checkbox-group v-model="selectedItems"> <u-checkbox v-for="item in items" :key="item.id" :label="item.id" :value="item.name">{{ item.name }}</u-checkbox> </u-checkbox-group> <button @click="showSelectedItems">显示选中的数据</button> </view> </template> <script> export default { data() { return { items: [ { id: 1, name: '选项1' }, { id: 2, name: '选项2' }, { id: 3, name: '选项3' } ], selectedItems: [] }; }, methods: { showSelectedItems() { console.log(this.selectedItems); } } }; </script> ``` 在上面的示例中,items数组存储了所有的选项数据,selectedItems数组用于存储选中的数据。当用户选择或取消选择某个选项时,selectedItems数组会自动更新。点击"显示选中的数据"按钮时,会将选中的数据打印到控制台。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值