I have a simple code based on Vue.js:
const app = new Vue({
el: 'vue-app',
data: {
displayedBooks: {}
},
created() {
fetch('/library').then(response => response.json())
.then((data) => this.data.displayedBooks = data);
}
});
But I got an exception:
Uncaught (in promise) TypeError: Cannot set property 'displayedBooks' of undefined at fetch.then.then (main.js:8)
Why this simple code is not works well?
Daniel
2,7772 gold badges22 silver badges37 bronze badges
asked Feb 23, 2019 at 19:07
2 Answers 2
It'd just be this.displayedBooks
, not this.data.displayedBooks
. Everything in your Vue data parameter gets attached to this directly.
answered Feb 26, 2019 at 9:58
Comments
const app = new Vue({
el: 'vue-app',
data: {
displayedBooks: {}
},
created() {
fetch('/library').then(response => {
this.displayedBooks = response.data
}, error =>{
console.log(error)
})
});
MisterJames
3,3261 gold badge32 silver badges49 bronze badges
Comments
lang-js
this.displayedBooks
, notthis.data.displayedBooks
. Everything in your Vuedata
parameter gets attached tothis
directly.this.displayedBooks = data
:)this.displayedBooks
and don't forget about store context withvar self = this
increated()
function