es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Vue js. Mi función en methods no es reconocida.

Tengo este componente Vue pero no entiendo el problema:

<template>
    <div>
        <div class="all-cards">
            <template v-for="(card,index) in res">
                <div class="cards-new" draggable="true" :data-id="card.id" @click="infoCard(index)" :key="card.id">
                    <div class="image-card"></div>
                    <div class="titles-card"> 
                        <p>{{card.title}}</p>
                    </div>
                    <div class="footer-card">
                        <div class="circle-people-card"></div>
                    </div>
                </div>
            </template>    
        </div>
        <card-info descriptioncard="hi" idinfo="2" titlecard="sua"></card-info>
    </div>
</template>

<script>
import axios from 'axios';
import CardInfo from './CardInfo.vue';
export default {
  name: 'Card',
  components:{
      CardInfo
  },
  data(){
      return{
        uri: 'http://localhost:8000',
        res: [],
        infoCard: '' 
    }
  },
  methods:{
      infoCard: function(clickedId){
          return this.infoCard = clickedId;
      }
  },
  mounted(){
      let url = this.uri + "/ajax/field-info";
      axios.get(url).then((msg) => {
           this.res = msg.data;
      });
  }
}
</script>

<style>

</style>

Sigue devolviéndome este error:

> TypeError: t.infoCard is not a function
>     at click (app.f815278e.js:1)
>     at Xe (900.23d000da.js:2)
>     at HTMLDivElement.n (900.23d000da.js:2)
>     at HTMLDivElement.o._wrapper (900.23d000da.js:2)

¿Alguien puede ayudarme?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error está relacionado con el método infoCard, al que se le está asignando un valor de tipo number en lugar de una función. El problema puede estar en la forma en que se está llamando al método infoCard en la plantilla.

    Para solucionar esto, intenta actualizar el método infoCard para que devuelva una función en lugar de un valor. En lugar de return this.infoCard = clickedId;, actualízalo a this.infoCard = () => { return clickedId; }.

    Luego, en la plantilla, actualiza el controlador @click para llamar al método infoCard como una función añadiendo () al final: @click="infoCard(index)()".

    Esto debería resolver el error y permitir que se llame correctamente al método infoCard.

Comments are closed.