Vuejs.是否可以将另一个函数返回的函数传递给事件处理程序?

t5zmwmid  于 2023-06-24  发布在  Vue.js
关注(0)|答案(1)|浏览(124)
<template>
  <v-list-item v-for="(category, i) in categories" :key="i">
    <v-item-group multiple @update:model-value="selectedChanged(category)">
       <v-item></v-item>
    </v-item-group>
  </v-list-item>
</template>

<script>
  function selectedChanged(category) {
    return function(items) {
      console.log(`select ${items} from ${category}`);
    }
  }
</script>

我希望在函数selectedChanged中,我可以知道选择了哪个类别。但它不起作用。Vue刚刚调用了selectedChanged,参数为category。
我想这样做的原因是,如果我定义selectedChanged如下:

function selectedChanged(items) {
  console.log(items);
}

我不知道选了哪个类别。
如何实现函数selectedChanged,以便我可以知道选择了哪个类别?

vuktfyat

vuktfyat1#

就像Estus在评论中说的,看起来你想要的东西可能可以通过显式传递$event作为你的事件处理程序参数之一来实现。(这里是$event上相关Vue 3文档的链接。)代码看起来像这样:

<template>
  <v-list-item v-for="(category, i) in categories" :key="i">
    <v-item-group multiple @update:model-value="selectedChanged(category, $event)">
       <v-item></v-item>
    </v-item-group>
  </v-list-item>
</template>

<script>
  function selectedChanged(category, items) {
    console.log(`select ${items} from ${category}`);
  }
</script>

当然,这个解决方案假设您正在寻找的items是由Vuetify中的update:model-value调用发出的。您可能需要进行一些解构或重构来精确地获得您想要的内容。

相关问题