私はこの問題を2時間抱えていましたが、実際には動作しないようです。VUE.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);
});
}
}
});
私が検索し、私は最終的な構造は、以下のものに似ていますので、値がデータに渡されたいAPI呼び出しを開始するとき。
data: {
searchInput: '',
books: {
"0": {
title: "Book 1"
},
"1": {
title: "Book 2"
}
},
現在、私はCannot read property '0' of undefined
を取得しています。
axios '.then()'メソッドのコールバック関数で 'this'の値が異なります。コールバックスコープで使用する前に、 'this'の値を外部に保存する必要があります。 – abhishekkannojia
@abhishekkannojiaこれを 'app'に変更すると、それが私のVueインスタンスが定義されている方法で、' Can not undefinedまたはnullをオブジェクトに変換できません 'というエラーがスローされます。 – Svedr
[Axiosでデータを設定できません]の重複している可能性があります(https://stackoverflow.com/questions/40996344/axios-cant-set-data) – yuriy636