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

推荐订阅源

Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园_首页
H
Help Net Security
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
The Cloudflare Blog
腾讯CDC
Jina AI
Jina AI
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
爱范儿
爱范儿
N
Netflix TechBlog - Medium
F
Fortinet All Blogs

蚊子的前端博客

微说 | 有的人觉得只要不考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>