oninput事件是IE之外的大多数浏览器支持的事件,在value改变时触发,实时的,即每增加或删除一个字符就会触发,然而通过js改变value时,却不会触发;
所以input是在input里的内容发生变化时触发的,至于这里的this.$emit('input', Number(formattedValue)),事实上这里是发送自定义事件'input',他是用于父子组件之间的通信的,也就是说这里emit的事件并不会被组件自己捕捉,也就是不会触发这里的updateValue,你在的<currency-input v-model="price"></currency-input>这里增加一下input的监听,emit触发的是这里的,所以不会发送你说的循环调用的情况。
this.$emit('input', Number(formattedValue))
emit
updateValue
<currency-input v-model="price"></currency-input>
input
所以input是在input里的内容发生变化时触发的,至于这里的
this.$emit('input', Number(formattedValue))
,事实上这里是发送自定义事件'input',他是用于父子组件之间的通信的,也就是说这里emit
的事件并不会被组件自己捕捉,也就是不会触发这里的updateValue
,你在的<currency-input v-model="price"></currency-input>
这里增加一下input
的监听,emit
触发的是这里的,所以不会发送你说的循环调用的情况。