Reputation: 2917
I'm receiving array of objects from backend in below format. I am trying to get this data and push it into a JavaScript array so that I can use them later on based on my needs.
[
{
id: 1,
name: "Dr. Darrin Frami III",
email: "[email protected]",
address: "42568 Cameron Cove Fritschborough, MA 86432-0749",
},
]
Here is my vuejs code:
<script>
export default {
data(){
return {
fakeUsers: [],
fakeUser: {id: '', name: '', email: ''},
}
},
methods:{
},
mounted() {
var route = '/get-users';
this.$http.get(route).then((response)=>{
for (var i = 0; i < response.data.length; i++) {
this.fakeUser.id = response.data[i].id;
this.fakeUser.name = response.data[i].name;
this.fakeUser.email = response.data[i].email;
this.fakeUsers.push(this.fakeUser);
}
});
console.log(this.fakeUsers);
console.log(this.fakeUsers[0]);
}
}
</script>
the vue-dev tool result:
Output of the line console.log(this.fakeUsers);
is [__ob__: Observer]
. Shouldn't it print something like [Array[10]]
?
Output of the line console.log(this.fakeUsers[0]);
is undefined
, and I can't figure out why.
Upvotes: 1
Views: 3887
Reputation: 23988
$http() creates an async ajax call, so the code in then()
is executed after the console command after it.
Simple solution: put the console commands into the function in .then()
as well.
Upvotes: 5