You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中computed属性未触发input禁用状态动态更新问题

问题原因

代码失效是两个写法错误导致的:

  • 复选框v-model绑定的是formData.useSystemSetting,但计算属性isDisabled里读写的都是根级this.useSystemSetting,没有追踪到复选框实际绑定的响应式变量,计算属性收集不到对应依赖,勾选复选框时自然不会触发重算。
  • 计算属性内不允许修改响应式值,你写的三目取反赋值属于副作用操作,违反Vue计算属性的设计规则,会直接打乱响应式更新链路。

修复方法

不需要多余的取反赋值逻辑,直接返回对应绑定值即可,注意属性路径要和v-model绑定的路径完全匹配:

修复后的计算属性

computed: {
  isDisabled() {      
    return this.formData.useSystemSetting;
  }
}

如果业务要求是勾选复选框时启用输入框、取消勾选时禁用,直接返回!this.formData.useSystemSetting即可,绝对不要在计算属性内部给响应式变量赋值。

极简写法

如果禁用逻辑没有其他分支判断,完全不需要单独写计算属性,直接在模板内绑定即可:

<input
  type="text"
  class="form-control"
  :class="hasError('maxCount') ? 'is-invalid' : ''"
  placeholder="Enter the Maximum Count"
  v-model="formData.maxCount"
  :disabled="formData.useSystemSetting"
>

额外提醒:检查data配置项,useSystemSetting必须定义在formData对象内部,和v-model绑定的结构保持一致,不要在data根级重复声明同名属性,否则会出现响应式冲突,导致更新失效。

内容的提问来源于stack exchange,提问作者kickinchicken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:12:23