vue关于封装方法

image.png
vue因为要服用这个接口就写了这个传参的方法,但是在then里能获取到数据,到外部就获取不到了。。怎么解决大佬们

image.png

结果
image.png

阅读 2.3k
3 个回答

代码没问题=。=但是因为你少写了一步,没有把 total 赋值给 this.total,所以你的 this.total 一直都是初始值 0。在 then 里面最后加上 this.total = total; 即可。
另外,console.log(1st, 'table 数据', total); 这一句不是获取不到 total,你的 total 是函数的参数,在函数里面任何地方都能访问,但是因为你上面的 get() 方法是异步的,所以会先执行你这一句,所以只能获取到初始值 0。

建议去学习下promise

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的是image.png 懒得写了抱歉
补一个这种写法和二楼的区别。 按照二楼的写法你如果你想把getPublicShareData方法封装到单独的js文件而不是这个.vue文件中,this的指向就有问题了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题