vue数据更新视图不实时更新的问题,这是为什么啊?

环境

vue + elemntUI

相关代码

https://codepen.io/eeeecw/pen...

具体情景

在输入框的 change 事件里,我修改了输入框的双向帮定值,但不是每次都显示在输入框里。
比如上面代码,输入框不支持小数,每次输入后,我都会在 change 事件里把数字转成整数,但是显示的值还是原来的值
但是如果在 change 事件里写一个 setTimeout 去把数字转成整数,就回成功把最新值渲染出来。。。
这是为什么?求原理?或者有什么更好的解决办法?


守候你守候我
浏览 524回答 1
1回答

慕慕森

应为num1初始值是1,你输入1.3655后,通过Math.floor(this.value.num1)计算之后还是num1还是1,el-input-number内部的watch没有监听到变化,el-input-number相关代码如下:&nbsp;&nbsp;watch:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;immediate:&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:&nbsp;function&nbsp;handler(value)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;newVal&nbsp;=&nbsp;value&nbsp;===&nbsp;undefined&nbsp;?&nbsp;value&nbsp;:&nbsp;Number(value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(newVal&nbsp;!==&nbsp;undefined)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isNaN(newVal))&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this.precision&nbsp;!==&nbsp;undefined)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newVal&nbsp;=&nbsp;this.toPrecision(newVal,&nbsp;this.precision); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(newVal&nbsp;>=&nbsp;this.max)&nbsp;newVal&nbsp;=&nbsp;this.max;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(newVal&nbsp;<=&nbsp;this.min)&nbsp;newVal&nbsp;=&nbsp;this.min;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.currentValue&nbsp;=&nbsp;newVal;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.$emit('input',&nbsp;newVal); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;},
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Vue.js