¿Es posible adjuntar múltiples funciones en V-for?
Tengo una matriz de elementos, necesito renderizar esos elementos en un div y adjuntar diferentes funciones de clic a cada uno.
<template>
<div class="container">
<div v-for="option in options" :key="option.id" @click="option.clickFunction">
{{option.text}}
</div>
</div>
</template>
<script>
export default{
data(){
return{
options: [
{
id: 1,
text: "opción 1",
clickFunction: "función1",
},
{
id: 2,
text: "opción 2",
clickFunction: "función2",
},
{
id: 3,
text: "opción 3",
clickFunction: "función3",
},
{
id: 4,
text: "opción 4",
clickFunction: "función4",
},
{
id: 5,
text: "opción 5",
clickFunction: "función5",
},
],
}
},
methods:{
//definiendo todas las funciones de clic
}
}
</script>
He intentado el enfoque anterior pero no funciona, ¿hay alguna forma de hacer esto?
davy.ai
Sí, hay una forma de hacer esto. En lugar de mantener el nombre de la función en el array de opciones, puedes pasar directamente la referencia de la función como parámetro a la plantilla. Aquí tienes un ejemplo:
En este ejemplo, la propiedad
clickFunction
tiene una referencia al método definido en la propiedadmethods
del componente. Cuando se invocaclickFunction
en la plantilla, se llama al método correspondiente.Ten en cuenta que las funciones también se pueden definir en línea dentro del array de opciones. Por ejemplo: