首页 > 解决方案 > 为什么函数没有在 eval 中定义?

问题描述

我有以下 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 中定义

我不明白为什么会这样。我显然遗漏了一些东西,但据我了解,使用与“方法”不同的方法应该没问题,但情况可能并非如此?任何帮助是极大的赞赏。

标签: javascriptvue.jsvue-component

解决方案


尝试this.CapitalizeFirstLetter


推荐阅读