L'objet du jeu de données à partir d'une méthode dans VUE.js

J'ai été coincé avec ce problème depuis 2 heures maintenant et vraiment, je n'arrive pas à obtenir ce travail.

JS:

const app = new Vue({
  el: '#book-search',
  data: {
    searchInput: 'a',
    books: {},
  },
  methods: {
    foo: function () {
      axios.get('https://www.googleapis.com/books/v1/volumes', {
        params: {
          q: this.searchInput
        }
      })
      .then(function (response) {
        var items = response.data.items
        for (i = 0; i < items.length; i++) {

          var item = items[i].volumeInfo;

          Vue.set(this.books[i], 'title', item.title);   

        }
      })
      .catch(function (error) {
        console.log(error);
      });

    }
  }
});

Quand j'ai lancer la recherche et de l'appel d'API, je veux les valeurs à transmettre à des données de sorte que la structure finale ressemble à celui ci-dessous.

data: {
  searchInput: '',
  books: {
    "0": {
       title: "Book 1"
     },
    "1": {
       title: "Book 2"
     }
},

Actuellement je reçois Cannot read property '0' of undefined.

  • La valeur de this est différent dans la fonction de rappel de l'axios .then() méthode. Vous devez enregistrer la valeur de this à l'extérieur avant de l'utiliser dans le rappel de la portée.
  • Si je change ce app, c'est la façon dont ma Vue instance est définie, il jette un Cannot convert undefined or null to object erreur.
  • Double Possible de Axios ne pouvez pas définir de données
InformationsquelleAutor Svedr | 2017-07-02