问题开发时,我们发现在通过循环获取input时,input的值并没有进行双向绑定,
如下图所示,
替换的属性值已经发生了变化,但是input框的内容还没有更新。
问题分析:
当我们触发input事件时,每次输入值都会触发赋值的事件,但是循环赋值是有时间的,
可能会导致的现象就是我们的值已经赋上了,此时input的value的监听还没有触发,产生延迟效果,
这样就会导致,我们input传的值已经进行的小数位数的保留,而input内的value没有变化。
解决方法:
1.在进行赋值的时候,我们可以设置一个延时效果,通过setTimeout的方法来解决。
2.使用vue自带的nextTick方法来进行操作,这样可以确保在所有的操作是在dom渲染之后进行的。
//此代码为保留小数位数的方法,方法链接:
保留小数位数的方法
nextTick(() => {
if (y> 0 && y> 7) {
ele.name= val;
console.log(ele.CompositionVal, '循环替换的属性的值')
}
});
tips:
nextTick的作用:在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用$nextTick(),则可以在回调中获取更新后的 DOM。