I would like to display some data received from the server in a loop:
The JSON data that I have received looks like this (seen in the browser console):
fetched data is:
{projs: Array(10), page_number: 1, total_pages: 1}
page_number: 1
projs: Array(10)
0: {typ: 1, ttl: 'Ada gwgwe', slg: 'Ada-gwgwe', dsc: ' Qui qui voluptas bla', skls: Array(2), …}
1: {typ: 3, ttl: 'Aut magna consequatu', slg: 'Aut-magna-consequatu', dsc: 'Reiciendis nobis omn', skls: Array(1), …}
2: {typ: 2, ttl: 'Perferendis itaque p', slg: 'Perferendis-itaque-p', dsc: 'Perferendis velit a', skls: Array(1), …}
3: {typ: 1, ttl: 'Cumque sint maiores ', slg: 'Cumque-sint-maiores-', dsc: ' Rerum a nemo consequ', skls: Array(4), …}
length: 4
[[Prototype]]: Array(0)
total_pages: 1
Here is my Vue.js code on a single page:
const vueApp = new Vue({
delimiters: ['${', '}'],
el: '#projs-container',
data: {
base_url: 'http://127.0.0.1:8080',
display: 'this is rendered fine',
projects: [],
projs: [],
},
created() {
// GET request using fetch with error handling
fetch("http://127.0.0.1:8080/projects-json")
.then(async response => {
const projects = await response.json();
console.log('fetched data is:', projects);
let projs = projects.projs;
// check for error response
if (!response.ok) {
// get error message from body or default to response statusText
const error = (data && data.message) || response.statusText;
return Promise.reject(error);
}
})
.catch(error => {
this.errorMessage = error;
console.error("There was an error!", error);
});
},
methods: {
});
HTML:
<div id="projs-container">
<p>Hello World. ${ display }</p>
<ul id="projs-loop">
<li v-for="p in projs" :key='projs.slg'>
${ p.ttl }
</li>
</ul>
However, to my surprise, nothing is being displayed in the loop. What could be going wrong here? How can I rectify this issue?