微信小程序如何向vue的nexttick一样接口请求之后获取dom ?

做项目的时候遇到一个问题。
比如页面有三个view 标签。假设view1 view2里的内容是通过ajax拿数据塞进去的,view3里面是写死的内容,比如文字图片啥的。
我想要获取一个view3相对于页面的top值,
而view1 view2的内容是由ajax异步获取的,然
直接在onload 或者onShow 或者onReady 获取view3 的top值 会发现。获取的值为0.

做过vue 或者小程序的人应该都明白为什么。

怎么处理这样的问题? vue里貌似可以用nexttick 处理。

阅读 5.9k
3 个回答

既然你提到了是 ajax 获取数据的。
获取完数据的更新应该是用的setData吧,有类似React的第二个参数callback的。

https://developers.weixin.qq....

setData有callback;

 this.setData({
      primeTipDown: wx.getStorageSync('primeTip')===""?true:wx.getStorageSync('primeTip')
    },() => { // 在这里执行计算top的方法
      this.computedPrimeTipStatus() 
    })

其实这无关于你用什么框架,你的目的是等待view1和view2的ajax回来渲染完成之后获取view3的top值
那么你可以使用Promise.all

await Promise.all([view1,view2])
this.$apply()
// 在这获取view3的top
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题