为了账号安全,请及时绑定邮箱和手机立即绑定

vue easytable axios 数据赋值问题

vue easytable axios 数据赋值问题

慕运维8079593 2019-03-29 16:19:31
我测试下来目前怀疑是javascript 异步执行的原因 。怀疑就是axios 还没执行完,赋值就已经发生了。我先自己测试尝试解决。1.我用VUE的 easytable 想加个 footer 的数据汇总,不知道怎样可以获取到table 数据。 easytable 说明: http://doc.huangsw.com/vue-ea...2.代码: tableData: 是VUE,data中定义的一个空数组。 .下面这个函数是定义在VUE,Methods,用来求和计算的:setFooterData () {axios.get('/asset/hosts').then(res => { this.tableData = res.data })console.log('========\n', this.tableData)let Cost111 = this.tableData.map(item => {return item.CostByMonth})...(后面的省去)}3.问题: 我没有想明白的问题是:为什么axios.get() 之后那一句 console.log 打印出来的 this.tableData 是空的数组。 导致我后面Cost111 获取不到数据。axios.get函数里面的 this.tableData 数据实际是获取到的。只是setFooterData() 这个函数里面我不知道如何获取保存这个axios得到的响应数据tableData。4.不知道讲问题明白了没,小弟愚笨,非程序员出身,都是自学捣鼓的,也没有人可以交流,路走的很苦,希望有人指点一二。
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

解决了,的确是因为js异步执行的原因,原来的写法,axios.get的响应返回前,后面的程序已经被执行了。 

改成下面的可以实现功能。 目前没想明白的是为社么这个 this.setFoorerData()需要在this.request()后面再写一遍,否则不出现footer.


created () {

    axios.get('/asset/hosts').then(res => { this.tableData = res.data; this.setFooterData() })

    this.request()

    this.setFooterData()

    //

}


查看完整回答
反对 回复 2019-04-09
  • 1 回答
  • 0 关注
  • 594 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信