Ich versuche Liste von Daten vom Server zu erhalten und zeigen, aber sieht aus wie Vue kein neue Daten sehen (sie nicht reaktiv machen)Vue2 Objekt nicht
Vue.component('Videos', {
template:
`
<div>
<div v-for="video in videos" v-text="video.name">
</div>
<div>
`,
data() {
return {
videos: {},
}
},
methods: {
getVideos() {
axios.get('/admin/videos?token='+localStorage.getItem('auth_token'))
.then(function(response) {
this.videos = response.data.videos;
}).catch(function(errors){
this.error = errors.data;
})
},
},
created: function() {
this.getVideos();
}
});
new Vue({
el: "#app",
});
Auch ich versuche
zu verwendenObject.keys(response.data.videos).forEach( key => this.$set(this.videos, key, response.data.videos[key]) );
und this.videos = Object.assign({}, this.videos, response.data.videos)
aber es ist immer noch nicht für mich arbeiten. Danke fürs Helfen!
Dank ihm helfen. Aber warum kann ich es nicht schreiben ohne diese ES2015 Antwort => ??? von axios docs 'axios.get (? '/ User ID = 12345') .then (function (response) { console.log (response); }) .catch (function (Fehler) { console.log (Fehler); }); ' –
Weil, wenn Sie anonyme Funktion verwenden 'Funktion (Antwort) {console.log (Antwort); } 'Ausführungskontext ist globales Objekt (' window'). Es ist in Ordnung, wenn Sie "console.log" möchten, aber in Ihrem Fall möchten Sie die Eigenschaft Ihrer Komponente festlegen, so dass Sie das richtige "this" haben müssen. '.dann (Funktion (Antwort) {this.videos = response.data.videos;} .bind (this))' würde funktionieren. Oder Sie können auch eine Referenz darauf speichern und sie im Callback verwenden: const self = this; ... .dann (function (response) {self.videos = response.data.videos;}) '. – dfsq