疑问求解!!:change为什么会触发两次,@change只触发一次

把@change错写成:change后,发现:change会触发两次事件;虽然我知道:change的写法是错误的,但是还是想知道,为啥v-band:change会触发两次,而v-on:只触发一次???

v-bind:change 是传递 prop,何来「触发」一说?

抱歉~我的表述不清。

抱歉~!是我没表达清楚。正常情况下@change=“change()”,change()方法会执行一次。但是我之前写错了,写成:change="change()"了,change()方法会执行两次

<whatever @change="change()">

相当于

whatever.addEventListener('change', () => {this.change()})

<whatever :change="change()">

相当于

whatever.change = this.change()

可见 :change 的写法在模板渲染时就会调用 this.change(),所以会立刻执行一次。至于为什么会有第二次,得看你组件逻辑具体怎么写的了。

2 Likes

运行过程中估计还不止两次吧,应该会渲染一次执行一次

感谢解答:yum: 我用的elementui的时间选择器

是的,确实是多次触发

相当于一个computed属性,需要渲染时执行一次

大神的回答醍醐灌顶,厉害厉害

:slightly_smiling_face: