Javascript Vuejs ajax调用未将更改映射到基础html表

Javascript Vuejs ajax调用未将更改映射到基础html表,javascript,vue.js,axios,Javascript,Vue.js,Axios,我正在使用vuejs和axios进行简单的ajax调用: var app1 = new Vue({ el: '#app1', data: { test: [] }, methods: { setAJAX: function () { axios.get('/Departments/GetDepartments/').then(response => this.test = response.data.listBACAET); }

我正在使用vuejs和axios进行简单的ajax调用:

var app1 = new Vue({
  el: '#app1',
  data: {
    test: []
  },
  methods: {    
    setAJAX: function () {
      axios.get('/Departments/GetDepartments/').then(response => this.test = response.data.listBACAET);
    }
  }
});
为什么这样做有效:

setAJAX: function () {
      axios.get('/Departments/GetDepartments/').then(response => this.test = response.data.listBACAET);
    }
但这不起作用,更改未映射到表中。此测试未定义:

setAJAX: function () {
      axios.get('/Departments/GetDepartments/').then(function(response){this.test = response.data.listBACAET});
    }

这是因为箭头函数的工作方式:

当使用arrow函数时,它隐式地绑定到封闭范围的这一部分,在您的例子中,就是调用该方法的vue实例。 因此,您正在设置视图模型的数据,这是可行的

使用标准函数时,作用域中没有此项,因此会出现错误。要使用标准函数,需要为视图模型定义一个闭包,如下所示:

setAJAX: function () {
  let vm = this
  axios.get('...').then( function(response) {
    vm.test = response.data.listBACAET
  });
}

这是因为箭头函数的工作方式:

当使用arrow函数时,它隐式地绑定到封闭范围的这一部分,在您的例子中,就是调用该方法的vue实例。 因此,您正在设置视图模型的数据,这是可行的

使用标准函数时,作用域中没有此项,因此会出现错误。要使用标准函数,需要为视图模型定义一个闭包,如下所示:

setAJAX: function () {
  let vm = this
  axios.get('...').then( function(response) {
    vm.test = response.data.listBACAET
  });
}

setAJAX是如何调用的?setAJAX是如何调用的?只有一件事我不明白——axios是函数类型的axios=='function'。如何进行此调用:axios.get“…”?它看起来像是函数中的函数。只有一件事我不明白——axios是函数类型的axios=='function'。如何进行此调用:axios.get“…”?它似乎是函数内部的函数。