Wpis z mikrobloga

Serwus!
Potrzebuję Waszej pomocy. Robię apkę w #vuejs i gdy pobieram dane i wypisuje je w logach mam coś takiego:

loadSongs: function() {
var app = this;
axios.get('http://localhost:3000/songs')
.then(function(response) {
this.songs = response;
console.log(response);
})
.catch(function() {
console.log('Error');
});
}

Logi - tablica

Jak widać response.data jest tablicą. Jednak, gdy przypiszę response.data do this.songs to nie jest już to tablica, a obiekt.

loadSongs: function() {
var app = this;
axios.get('http://localhost:3000/songs')
.then(function(response) {
this.songs = response.data;
console.log(this.songs);
})
.catch(function() {
console.log('Error');
});
}

Logi - tu już jest obiektem

No i tak to wygląda. Potrzebuję tablicy obiektów, ale nie wiem czemu przy przypisywaniu do zmiennej tablica staję się obiektem.

#js #naukaprogramowania #vuejs
  • 16
@JewelOfTheNile: spróbuj
this.$forceUpdate()
z tego co wiem to Vue ze wzlędu na kompatybilność z jakimś starszym IE ma / miało problem z śledzeniem zmian w obiektach. Chociaż tutaj jest to array więc w sumie powinno działać. Nie wiem, spróbuj
@JewelOfTheNile: Nie pisałem w Vue ale generalnie monitorowanie zmian odbywa się przez porównywanie referencji do obiektów, więc jeśli dodajesz element przez push to nie zmienia się referencja do tablicy i pewnie dlatego nie odświeża. Spróbuje przez staraTablice = [...staraTablica, nowyElement];