Melon NG
Melon NG

Reputation: 3004

Why I cannot render AJAX JSON value?

Here is my code:

<ul>
  <li v-for="value in RandomTopic" :key="value.id">{{ value.title }}</li>
</ul>
export default {
  data() {
    return {
      RandomTopic: null
    }
  },
  mounted() {
     ///some method to get data from remote server
     console.log(res.data);
     this.RandomTopic = res.data;
  }
}

I want to render all the data from the remote server in front end. However, after the program ran, it reports this error:

Cannot set property 'RandomTopic' of undefined ; at api request success callback function
TypeError: Cannot set property 'RandomTopic' of undefined

The console.log(res.data); log the JSON successfully so it seems not the problem of AJAX or remote server.

And also, here is a sample of the JSON:

[
    {
        "id": 421,
        "title": "sample1",
        "image_url": "bus.png"
    },
    {
        "id": 535,
        "title": "sample78",
        "image_url": "car.png"
    }
]

What's wrong with my code ? I am a beginner of Vue 3, please help me.

Upvotes: 0

Views: 38

Answers (1)

Roh&#236;t J&#237;ndal
Roh&#236;t J&#237;ndal

Reputation: 27242

As per the error you mentioned, Issue is basically related to the scope of this. Looks like you are using regular function instead of arrow function ( => {...}) which don't provide their own this binding (it retains this value of the enclosing lexical context).

Reference - Arrow function

.then(res => {
    this.RandomTopic = res.data;
})

Upvotes: 1

Related Questions