Vue 应用程序如何在使用 vm.$once() 时将附加参数传递给事件侦听器?
How could the Vue app pass the additional parameters to the event listener when using vm.$once()?
在Vue app中,可以通过vm.$once.
添加一次调用的事件监听器
例如,在 Vue App 的子组件中,它可以使用 vm.$emit('myEvent', data)
发出事件。 emit event
然后可以通过在 Vue 应用程序中使用 vm.$once
添加事件侦听器来处理它。
这时,我想将附加数据传递给事件处理程序。
我试过如下。但它会引发错误。
Uncaught ReferenceError: $event is not defined
//In the Vueapp
this.$refs.child.$once(
'myEvent', this.eventHandler($event, additional_data)
);
但我认为它可以在使用 v-on
时传递额外的数据。
<child-component ref="child" v-on:myEvent="eventHandler($event, additional_data)"></child-component>
//$event is the data emitted from the event , "myEvent".
使用vm.$once
或vm.$on
时,不能传附加参数吗?
注意:我之所以用vm.$once
是因为我想在发出自定义事件时只执行一次eventHandler
,myEvent
并动态添加 .
您需要捕获传递给事件处理程序的参数。您可以通过为调用您的方法的处理程序使用匿名函数来完成此操作。例如
this.$refs.child.$once('myEvent', $event => {
this.eventHandler($event, additional_data)
})
您也可以喜欢 Function.prototype.bind()
,但是您必须反转参数列表,因为 bind
会在参数前面加上参数。
例如
methods: {
eventHandler(data, $event) { // reversed argument list
// etc
}
}
和
this.$refs.child.$once('myEvent', this.eventHandler.bind(this, additional_data))
在Vue app中,可以通过vm.$once.
添加一次调用的事件监听器
例如,在 Vue App 的子组件中,它可以使用 vm.$emit('myEvent', data)
发出事件。 emit event
然后可以通过在 Vue 应用程序中使用 vm.$once
添加事件侦听器来处理它。
这时,我想将附加数据传递给事件处理程序。
我试过如下。但它会引发错误。
Uncaught ReferenceError: $event is not defined
//In the Vueapp
this.$refs.child.$once(
'myEvent', this.eventHandler($event, additional_data)
);
但我认为它可以在使用 v-on
时传递额外的数据。
<child-component ref="child" v-on:myEvent="eventHandler($event, additional_data)"></child-component>
//$event is the data emitted from the event , "myEvent".
使用vm.$once
或vm.$on
时,不能传附加参数吗?
注意:我之所以用vm.$once
是因为我想在发出自定义事件时只执行一次eventHandler
,myEvent
并动态添加 .
您需要捕获传递给事件处理程序的参数。您可以通过为调用您的方法的处理程序使用匿名函数来完成此操作。例如
this.$refs.child.$once('myEvent', $event => {
this.eventHandler($event, additional_data)
})
您也可以喜欢 Function.prototype.bind()
,但是您必须反转参数列表,因为 bind
会在参数前面加上参数。
例如
methods: {
eventHandler(data, $event) { // reversed argument list
// etc
}
}
和
this.$refs.child.$once('myEvent', this.eventHandler.bind(this, additional_data))