Почему функция не определена при eval?


Почему функция не определена при eval?

03.12.2020 02:11:26 Просмотров 57 Источник

У меня есть следующий файл Pokemon.vue:

<template>
  <div class="pokemon">
    <h1>Pokemon Overview</h1>
    <div class v-for="pokemon in pokemonArray" :key="pokemon.id">
      <p>{{ pokemon.name }}</p>
      <p>{{ pokemon.number }}</p>
      <p>{{ pokemon.height }}</p>
      <p>{{ pokemon.weight }}</p>
      <p>{{ pokemon.types }}</p>
    </div>
    <button @click="AddPokemon">AddPokemon</button>
  </div>
</template>

<script>
import axios from "axios";
import db from "@/firebase/init";
export default {
  name: "Pokemon",
  data() {
    return {
      pokemonArray: [],
    };
  },
  methods: {
    CapitalizeFirstLetter(string) {
      return string.charAt(0).toUpperCase() + string.slice(1);
    },
    AddPokemon() {
      for (var i = 520; i < 524; i++) {
        axios.get("https://pokeapi.co/api/v2/pokemon/" + i).then((response) => {
          var types = [];
          for (var j = 0; j < response.data.types.length; j++) {
            types.push(response.data.types[j].type.name);
          }
          db.collection("pokemon").add({
            number: i,
            name: CapitalizeFirstLetter(response.data.name),
            weight: response.data.weight / 10,
            height: response.data.height / 10,
            types: types,
            image:
              response.data.sprites.other["official-artwork"].front_default,
          });
        });
      }
    },
  },
  created() {
    //Fetch data from the firestore
    db.collection("pokemon")
      .get()
      .then((snapshot) => {
        snapshot.forEach((doc) => {
          let pokemon = doc.data();
          this.pokemonArray.push(pokemon);
        });
      });
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>


Однако, когда я нажимаю кнопку, которая запускает функцию AddPokemon, я получаю удар

CapitalizeFirstLetter не определен при eval

И я не понимаю, почему это происходит. Я явно что-то упускаю, но, насколько я понимаю, было бы неплохо использовать другой метод, отличный от "методов", но это может быть не так? Любая помощь очень ценится.

У вопроса есть решение - Посмотреть?

Ответы - Почему функция не определена при eval? / Why is function is not defined at eval?

andrei040191

03.12.2020 02:14:49

попробуйте this.CapitalizeFirstLetter

Является ответом!
Dan

03.12.2020 02:14:57

Это должно быть this.CapitalizeFirstLetter:

db.collection("pokemon").add({
   number: i,
   name: this.CapitalizeFirstLetter(response.data.name),
   weight: response.data.weight / 10,
   height: response.data.height / 10,
   types: types,
   image:
   response.data.sprites.other["official-artwork"].front_default,
});
Jeterson Miranda Gomes

03.12.2020 02:16:16

Вам нужно использовать this для доступа к экземпляру vue, например, this.CapitalizeFirstLetter(string)

Помочь в развитии проекта:
Закрыть X