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

为何使用自定义+/-按钮时update:model-value事件未触发,手动输入却正常?

问题原因及解决方案

原因

@update:model-value是Quasar的q-input组件内部专属触发的事件,只有当用户通过输入框自身的交互(比如手动输入、组件内置的输入逻辑)修改绑定值时,组件才会主动抛出这个事件。而你点击+/-按钮时,是直接在组件外部修改了props.row.qty的数值,这种外部修改行为不会被q-input感知到,自然不会触发update:model-value事件。

解决方案

有两种简单的处理方式:

方式一:在按钮点击事件中直接调用doUpdate()

修改按钮的点击逻辑,每次增减数值后主动触发更新:

<template v-slot:body-cell-qty="props">
  <q-td :props="props">
    <div class="column items-end">
      <q-input style="max-width: 120px;" dense outlined color="blue-grey-9" input-style="text-align: center" input-class="cell-input-dense" debounce="800" v-model="props.row.qty" @update:model-value="doUpdate()">
        <template v-slot:prepend>
          <q-btn round dense flat icon="remove" @click="props.row.qty--; doUpdate()" />
        </template>
        <template v-slot:append>
          <q-btn round dense flat icon="add" @click="props.row.qty++; doUpdate()" />
        </template>
      </q-input>
    </div>
  </q-td>
</template>

方式二:通过监听props.row.qty的变化触发更新

在组件的watch选项中监听props.row.qty的变动,一旦数值变化就调用doUpdate():

// 组件的script部分
export default {
  // ...其他代码
  watch: {
    'props.row.qty': {
      handler() {
        this.doUpdate()
      },
      deep: true // 如果props.row是嵌套对象,需要开启深度监听
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:37:36