element不支持v-model.lazy吗?

用了.lazy修饰符,但还是每输入一个字符都会触发watch里面的事件,怎么在onchange后再触发修改值,触发watch呢?

<el-input 
    type="number" 
    v-on:change="changeGrabAmount"
    v-model.lazy="dialogParam.grabAmount" 
    :disabled="disableBtnGrabmount"
    >
</el-input>
watch:{
     "dialogParam.grabAmount": function(val) {
         //...
     }
}
阅读 9.5k
3 个回答

.lazy修饰符并不能延迟完成数据更新,其实你v-model绑定的数据还是更新了,只不过没有在data里显示,但是watch还是可以监听到的,所以还是会触发watch,即使使用了.lazy修饰符
要想实现你想要的功能,你可以定义一个中间量过度一下,然后在v-on:change事件中处理一下。看代码吧

<el-input 
    v-on:change="changeGrabAmount"
    v-model="tmp" 
    :disabled="disableBtnGrabmount"
    >
</el-input>

data() {
    return {
        tmp: "",
        dialogParam: {
          grabAmount: ""
        }
    };
},
methods: {
    changeGrabAmount(val){
        this.dialogParam.grabAmount = val
    }
},
watch:{
    "dialogParam.grabAmount": function(val) {
        //...
     }
}

试试.native.lazy
你为什么不在onchange里面做处理呢

新手上路,请多包涵

Element组件中文官网 input输入框组件第一行解释。不支持v-model 修饰符。

ex:
Input 为受控组件,它总会显示 Vue 绑定值

通常情况下,应当处理 input 事件,并更新组件的绑定值(或使用v-model)。否则,输入框内显示的值将不会改变。

不支持 v-model 修饰符。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题