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

Quasar循环渲染q-select校验选中后错误不清除问题

问题根因

校验规则写法错误,同时存在响应式更新隐患:

  • q-select的rules校验函数入参val是当前单个选择器绑定的value值,也就是v-for循环里对应的单个user对象,不是整个users数组。你写的!!val[index]相当于在user对象上查找数字索引属性,user对象里不存在这类属性,无论是否选中用户,校验永远返回失败,错误提示自然无法清除。
  • 原有onSelect方法直接修改数组项的内部属性,在Vue2场景下可能无法触发响应式更新,导致组件校验状态不刷新。
修复步骤
  1. 修正校验规则,直接判断当前选择器的value是否为有效用户即可,移除错误的[index]取值:
<!-- 替换原有q-select上的rules配置 -->
:rules="[val => (!!val && !!val.id && val.username !== '') || 'Please select a user']"
  1. 调整onSelect方法的更新逻辑,使用$set更新数组项,保证响应式正常触发:
onSelect(value, selectedIndex) {
  this.$set(this.users, selectedIndex, {
    username: value.username,
    id: value.id
  })
  this.$emit(
    "update:user",
    this.users.length > 0
      ? this.users.map(user => ({ id: user.id }))
      : []
  );
},
可选优化

v-for循环不建议用index作为key,删除用户时会出现组件复用问题,可以在新增用户时生成唯一临时ID作为key,避免渲染异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:06:27