vue2 & обещание Как обновить переменную? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть класс с переменной в конструкторе, я пытаюсь сделать ajax-запрос и обновить переменную.Но переменная не в моей области видимости.что я могу сделать?

import Axios from "axios";

class ajaxTest{
    constructor() {
        this.resultOfAjax=" Mein Test";
    }

    set(id){
        return new Promise(function(resolve, reject) {
            Axios.get('/api/v1/ajax/'+id)  
            .then(function (response) {
                this.resultOfAjax=response.data;
                resolve(200);
                console.log("Test");
            });
        })
    }
}
export default ajaxTest;

Также я пытаюсь обновить переменную loadingCircle, но она не работает.Я думаю, что это та же ошибка.Это правильно?

const app = new Vue({
    el: '#app',
    data: {
      loadingCircle: true,
      ajaxTest: new ajaxTest()
    },
    methods: {
      handleClick: function(id) {
        console.log("Das ist ein Test die ID ist:"+id); 
        this.ajaxTest.set(id).then( function(status){
          console.log("Status "+status);
          this.loadingCircle=false;
        });
      }
    },
    components: {
      examplecomponent
    }
});

1 Ответ

2 голосов
/ 19 марта 2019

Если вы используете function, то this внутри него не совпадает с this снаружи. Решение состоит в том, чтобы вместо этого использовать жирную стрелку.

const app = new Vue({
    el: '#app',
    data: {
      loadingCircle: true,
      ajaxTest: new ajaxTest()
    },
    methods: {
      handleClick: (id) => {
        console.log("Das ist ein Test die ID ist:"+id); 
        this.ajaxTest.set(id).then( (status) => {
          console.log("Status "+status);
          this.loadingCircle=false;
        });
      }
    },
    components: {
      examplecomponent
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...