表单中奇数次按下字母,总会多一个字符串text:{{text}}myInt:{{myInt}}请在下表单中继续输入字符串测试exportdefault{name:'test',data(){return{text:123456,}},computed:{myInt:{cache:false,get:function(){returnthis.text;},set:function(value){this.text=value.toString().replace(/[^\d]/g,'');console.log(value)}}}}
2 回答
不负相思意
TA贡献1777条经验 获得超10个赞
原因是数据发生改变视图才会重新渲染当你输入值value值发生变化然后被你替换还是原来是值也就是说myInt拿到的值没有发生变化所以视图没有重新渲染文本框值也就不会变化computed这边用也是不合适如果你想input输入受控可以使用input||change事件text:{{text}}myInt:{{text}}
请在下表单中继续输入字符串测试
拉丁的传说
TA贡献1789条经验 获得超8个赞
cache已经从vue2.0中移除计算属性是依赖data中的属性进行监听的,也就是说,你这里用到的v-modal是基于text进行驱动的当UI的值(也就是这里的input)发生变化的时候,实际的流程是下面这样(1)用户输入-->(2)inputdom的值发生修改-->(3)触发事件监听-->(4)computed中的set执行-->(5)vue对比缓存-->(61)如果发生变化触发get,更新dom-->(62)如果没有发生变化,不触发get,dom不变
添加回答
举报
0/150
提交
取消