为了账号安全,请及时绑定邮箱和手机立即绑定

vue中如果对input元素通过keydown控制元素的属性变化,会出现不能输入的情况

vue中如果对input元素通过keydown控制元素的属性变化,会出现不能输入的情况

犯罪嫌疑人X 2019-05-12 11:13:57
官方的回复就是属性改变会整体元素render,并不是setAttribute看来只能自己规避,感谢各位的回答,给+1官方回复大概猜到了,是不是属性的变化引起了render,vue内部render的逻辑会重新读取props上的value进行重新渲染,所以就出现了下面的情况.请看过的vue源码的大神给与回复确认,3q.演示请问这是不是vue的bug?浏览器:mac谷歌68vue:2.5.16&&2.5.17复现1复现2代码:newVue({el:"#app",data:{text:'vue',hasWarning:false},methods:{keydown(){if(1==1){this.hasWarning=true;}this.hasWarning=false;}}})
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

把:value="text"改为v-model="text"
我觉得你用:value只是把text变量的初始值赋值给了input,但是input的值的改变并不会改变text变量,所以值一直没有改变。要想两者统一还是得用v-model进行双向绑定
如果不用双向绑定就需要每次手动在keydown方法里修改this.text,会较麻烦。
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 1987 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号