首页 > 解决方案 > 在 Vue 中,如何将特殊的 $event 变量作为参数传递?

问题描述

在 Vue 中,我正在侦听更改事件并尝试将特殊的 $event 变量传递给如下操作:

<template>
<div>
      <span>Filter Todos:</span>
      <select @change="filterTodos($event)">

在我的行动中,我现在刚刚得到这个:

filterTodos(event) {
        console.log('Here is the event:', event);
    }

当我教程中的 Brad Traversy 执行此操作时,他会在控制台中获取事件。但是当我这样做时,我得到了这个:

{getters: {…}, state: {…}, rootGetters: {…}, dispatch: ƒ, commit: ƒ, …}
commit: ƒ boundCommit(type, payload, options)
dispatch: ƒ boundDispatch(type, payload)
getters: {}
rootGetters: {}
rootState: {__ob__: Observer}
state: {__ob__: Observer}
__proto__: Object

我要去那里做什么?为什么我没有和他一样?评论部分的其他人似乎对此没有任何问题,所以我一定是在做一些愚蠢的事情,但我无法发现它......

标签: vue.jseventsevent-handling

解决方案


我现在意识到了错误......我不能将参数“事件”作为我的 filterTodos 操作中的唯一参数。如果我执行以下操作,那么它会起作用,并且我会在控制台中收到事件......

filterTodos({ commit }, event) {
    console.log('Here is the event:', event);
    commit('testForNow');
}

因此,动作的第一个参数(在本例中为 { commit })与我将在本教程后面针对该动作进行的任何突变相关。'event' 需要成为我的第二个参数,即使 '$event' 是我调用此操作时的唯一参数。


推荐阅读