- 问题1:@some-event="handleEvent()"带括号和不带括号的区别?
- 问题2:$emit如果要传多个参数出来,及结合自定义的参数。怎么处理?
从源码分析可知:
如果带了(),则相当于会在我们绑定的事件外部再包装一层函数
on: {
"emit-handle": function($event) {
return _vm.handleEmitHandle()
}
}
如果不带(),则会直接调用我们绑定的函数
- 由上可知
- ()不能随便带上,可能导致参数
$event没能传到我们绑定的函数上面
- ()时,我们是可以接收$event作为我们的参数的,随便放在哪个位置
- 同时我们也发现,包装函数只接收一个参数为
$event,如果我们希望包装函数可以接收我们$emit出来的全部参数,我们可以用arguments来接收包装函数的全部参数,作为我们绑定参数的一个实参
@some-event="handleEvent(arguments,1,2)"
@some-event="handleEvent(1,arguments,2)"
on: {
"emit-handle": function($event) {
return _vm.handleEmitHandle(1,arguments,2)
}
}
- 总结
- 带上()会执行包装函数,我们要用
$event,或arguments来接收$emit的实参
- 不带()会直接执行我们绑定的函数