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;
            });
        },
→ Ссылка