vue因为要服用这个接口就写了这个传参的方法,但是在then里能获取到数据,到外部就获取不到了。。怎么解决大佬们
结果
1楼说的很对,你需要的是学习promise语法。promise被设计出来就是执行这类异步处理的。
硬核一点的也是有的,
// 封装的方法
getPublicShareData(time){
// 这里就直接把promise抛出去了
return get(...)
}
// 调用的地方
this.getPublicShareData(this.currentData).then(res=>{
if (!res.success) return;
// 可直接访问 this.tableData 和 this.total
this.tableData = res.data;
this.total = this.tableData.length;
})
封装方法里 return的是 懒得写了抱歉
补一个这种写法和二楼的区别。 按照二楼的写法你如果你想把getPublicShareData方法封装到单独的js文件而不是这个.vue文件中,this的指向就有问题了。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答4.8k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
代码没问题=。=但是因为你少写了一步,没有把
total
赋值给this.total
,所以你的this.total
一直都是初始值 0。在then
里面最后加上this.total = total;
即可。另外,
console.log(1st, 'table 数据', total);
这一句不是获取不到total
,你的total
是函数的参数,在函数里面任何地方都能访问,但是因为你上面的get()
方法是异步的,所以会先执行你这一句,所以只能获取到初始值 0。