Я пытаюсь получить список данных с сервера и показать его, но выглядит как Vue не видят новые данных (не делает их реактивными)объекта Vue2 не выставиться
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",
});
Также я стараюсь использовать
Object.keys(response.data.videos).forEach( key => this.$set(this.videos, key, response.data.videos[key]) );
и this.videos = Object.assign({}, this.videos, response.data.videos)
, но это все еще не работает для меня. Спасибо за помощь!
Спасибо это поможет. Но почему я не могу написать это без ответа ES2015 => ??? из AXIOS Документов 'axios.get ('?/Идентификатор пользователя = 12345') .then (функция (ответ) { console.log (ответ); }) .catch (функция (ошибка) { console.log (ошибка); }); ' –
Потому что, когда вы используете анонимную функцию' function (response) {console.log (response); } 'контекст выполнения - это глобальный объект (' window'). Это нормально, если вы хотите 'console.log', но в вашем случае вы хотите установить свойство своего компонента, поэтому вам нужно иметь правильное' this'. '.then (function (response) {this.videos = response.data.videos;} .bind (this))' будет работать. Или вы также можете сохранить ссылку на это и использовать его внутри обратного вызова: 'const self = this; ... .then (function (response) {self.videos = response.data.videos;}) '. – dfsq