惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
博客园_首页
Jina AI
Jina AI
WordPress大学
WordPress大学
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
美团技术团队
IT之家
IT之家
爱范儿
爱范儿
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】

蚊子的前端博客

微说 | 有的人觉得只要不考XX,一定能考好!-蚊子的前端博客 微说 | 春天来了-蚊子的前端博客 明天和意外不知道哪个先来-蚊子的前端博客 微说 | 既然错过了路口,就及时止损,重新规划路线上路-蚊子的前端博客 微说 | 2025年的出生人口数是792万-蚊子的前端博客 微说 | 工作年终总结,让写对接的接口的数量?-蚊子的前端博客 微说 | 温家宝:没有政治体制改革的成功 经济体制改革不可能进行到底-蚊子的前端博客 微说 | 违法犯罪了该不该被禁言?-蚊子的前端博客 微说 | 不明白为什么在推荐去俄罗斯旅游-蚊子的前端博客 微说 | 易中天论骗子-蚊子的前端博客 微说 | 一场大风吹散了秋天-蚊子的前端博客 微说 | 既要、又要、还要、更要!-蚊子的前端博客 又是一年的国庆雨季-蚊子的前端博客 微说 | 预估下2025年的出生人口数据-蚊子的前端博客 微说 | 可惜了我那些小时候的书本-蚊子的前端博客 微说 | 牛马有的是,驴不够了!-蚊子的前端博客 微说 | 能否有一条非户口也能高考的路-蚊子的前端博客 微说 | 小聊中医-蚊子的前端博客 微说 | 将要制作的一款新产品-蚊子的前端博客 微说 | 做人要有信-蚊子的前端博客 微说 | 好一个正义联盟-蚊子的前端博客 微说 | 都是见过吃过的主儿-蚊子的前端博客 微说 | 追求8小时工作制有错吗?-蚊子的前端博客 微说 | 如果尖锐的批评完全消失-蚊子的前端博客 微说 | 很好!-蚊子的前端博客 微说 | 封禁用户可以,但要告知具体原因-蚊子的前端博客 微说 | 面朝大海,春暖花开-蚊子的前端博客 微说 | 程序员的悲哀是什么?-蚊子的前端博客 微说 | 2025年出生人口的预测-蚊子的前端博客 前端在 LiveKit 中如何获取所有的参与者-蚊子的前端博客
uniapp 中 checkbox 中的 checked 不生效的方案-蚊子的前端博客
author · 2023-09-19 · via 蚊子的前端博客

我在使用 uniapp 开发小程序的过程中,遇到了小小的问题。当我勾选 checkbox 后,我会去进行一些校验,若校验没有通过,需要再取消这次的勾选。如下:

<template>
  <checkbox-group @change="checkboxChange">
    <label>
      <checkbox value="cb" :checked="checked" />
      选中
    </label>
  </checkbox-group>
</template>
<script>
  export default {
    data() {
      return {
        checked: false,
      };
    },
    methods: {
      checkboxChange(event) {
        if (Array.isArray(event.detail.value) && event.detail.value.length) {
          // 选中的操作

          checkOpenId().then((isValid) => {
            if (!isValid) {
              // 不生效
              this.checked = false;
            }
          });
        } else {
          this.checked = false;
        }
      },
    },
  };
</script>

但我不管怎么设置他的checked属性都不管用。

复选框组件(checkbox 组件) 的问题,因为复选框组件没有 @change 事件,checkbox-group 组件拥有 @change 事件,事件返回的结果是当前复选框组中已经勾选的值,但并未同步修改 checked 属性。该组件是直接切换的组件状态,然后触发的 change 事件,并没有同步更新 checked 属性所绑定的值。所以开关组件默认 checked 属性为 true 的时候,点击组件本身会将组件的状态切换为关,但是 checked 属性的并没有改变。

解决方案就是在 @change 的事件中,首先将 checked 设置为 true,然后再想设置成 false 的时候,就可以生效了。

<script>
  export default {
    data() {
      return {
        checked: false,
      };
    },
    methods: {
      checkboxChange(event) {
        if (Array.isArray(event.detail.value) && event.detail.value.length) {
          // 选中的操作
          this.checked = true; // 先将其设置true

          checkOpenId().then((isValid) => {
            if (!isValid) {
              this.checked = false;
            }
          });
        } else {
          this.checked = false;
        }
      },
    },
  };
</script>