首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vuejs ajax调用不将更改映射到基础html表。

Vuejs ajax调用不将更改映射到基础html表。
EN

Stack Overflow用户
提问于 2019-11-25 09:58:54
回答 1查看 45关注 0票数 1

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

代码语言:javascript
运行
复制
var app1 = new Vue({
  el: '#app1',
  data: {
    test: []
  },
  methods: {    
    setAJAX: function () {
      axios.get('/Departments/GetDepartments/').then(response => this.test = response.data.listBACAET);
    }
  }
});

为什么这样做是有效的:

代码语言:javascript
运行
复制
setAJAX: function () {
      axios.get('/Departments/GetDepartments/').then(response => this.test = response.data.listBACAET);
    }

但是这不起作用,更改不会映射到表中(this.test未定义):

代码语言:javascript
运行
复制
setAJAX: function () {
      axios.get('/Departments/GetDepartments/').then(function(response){this.test = response.data.listBACAET});
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 10:07:09

这是因为箭头函数的工作方式:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#No_separate_this

当使用箭头函数时,this被隐式绑定到封闭作用域的this,在您的示例中,这是调用该方法的vue实例。因此,您正在设置视图模型的数据,这是可行的。

当使用性病的时候。函数,在作用域中没有this,因此出现了错误。用性病。函数,您需要为视图模型定义一个闭包,如下所示:

代码语言:javascript
运行
复制
setAJAX: function () {
  let vm = this
  axios.get('...').then( function(response) {
    vm.test = response.data.listBACAET
  });
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59029220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档