Vue.js не записывается поле
Не записывается поле this.chats
в методе get_chats()
. Причем, внутри метода this.chats
есть, а если вызвать за пределами, то уже нет. Возможно проблема в запросе...
new Vue({
el: '#app',
data() {
return {
chat_id: 2,
rotation_date: 0,
selected_chats: [],
chats: [],
data: [],
desc_option: 'true'
};
},
mounted() {
this.get_chats()
this.fetchData()
},
methods: {
request(type, method, args = ['']) {
return new Promise((resolve, reject) => {
const options = args.join('&');
const xhr = new XMLHttpRequest();
const url = 'http://127.0.0.1:8000/' + method + '?' + options;
console.log(url)
xhr.open(type, url, true);
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
const responseData = JSON.parse(xhr.responseText);
resolve(responseData);
} else {
reject('Request failed with status: ' + xhr.status);
}
}
};
xhr.send();
});
},
fetchData(chats = this.chats, desc_option = this.desc_option) {
console.log(this.chats)
this.request('GET', 'get_messages', [`des=${desc_option}`, `chat_id=${chats.join('&chat_id=')}`])
.then(data => {
this.data = data;
})
},
get_chats() {
this.request('GET', 'get_chats')
.then(data => {
this.chats = data;
});
},
}
});
Ответы (1 шт):
Автор решения: Виктор Карев
→ Ссылка
Возможно, через промис не доходит контекст. В таких случаях можно сделать так:
get_chats() {
let self = this;
this.request('GET', 'get_chats')
.then(data => {
self.chats = data;
});
},