函数在Vue.js

时间:2017-12-25 12:28:32

标签: vue.js axios

我正在尝试从 mounted()中的方法调用一个函数,但它返回undefined。如果我创建一个console.log,它会显示结果。我做错了什么?

 methods: {
    bsBooks: () => {
      axios
        .get(
          "https://api.nytimes.com/svc/books/v3/lists/best-sellers/history.json?api-key=mykey_is_here"
        )
        .then(res => {
          return res.data.results
        });
    }
  },
mounted() {
  console.log(bsBooks())
}

2 个答案:

答案 0 :(得分:2)

我找到了一个解决方案,也许它不是最好的,但我们可以在承诺中返回数据,例如

methods: {
    bsBooks: () => {
      return axios
        .get(
          "https://api.nytimes.com/svc/books/v3/lists/best-sellers/history.json?api-key=my_api_key"
        )
        .then(response => response.data.results)
    }
  },
  mounted() {
    this.bsBooks().then(value => console.log(value))
  }

答案 1 :(得分:0)

bsBooks()未定义,因此请使用this.bsBooks(), 还会将结果存储到名为data的{​​{1}}并使用它:

books
<template>
    <ul>
        <li v-for="book in books">{{ book }}</li>
    </ul>
</template>