小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用场景,我想获取setData后的节点信息。setData前页面是没有元素的,首次渲染的页面是依靠onload里set的数据渲染出来。我在ajax回调里获取,返回null。在onReady获取返回null。用setTimeout获取,这个时候this.data已经有数据了,但是获取节点信息还是null,基础库是1.6.4。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
被同样的问题折磨了好久,测试情况如下:
在Page的onLoad、onReady、onShow等事件中调用,均返回null
如果在操作事件回调中(比如在某个按钮的bindtap中调用),则可以正常返回数据
初步判断,应该是页面较为复杂时,onLoad、onReady、onShow等事件均不能保证想要获取的节点已经载入,所以获取不到。
有的人使用定时器来解决,也就是页面载入后延时几秒钟才去获取,但我觉得这种方法太丑陋了,而且依然有失败的可能。
我的解决方案是在某个耗时较久的异步事件的成功回调中调用,比如我要动态计算高度的view是用于装载某个数据列表的,那么我就在获取这个异步数据的成功回调中获取所需计算的wxml节点的信息,然后再设置所需的高度。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
请问解答了吗?遇到同样的问题
凭印象,好像是因为setData是异步的。但是文档没有说明白。也没有setData的回调。后面好像官方已经修复了的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
被同样的问题折磨了好久,测试情况如下:
在Page的onLoad、onReady、onShow等事件中调用,均返回null
如果在操作事件回调中(比如在某个按钮的bindtap中调用),则可以正常返回数据
初步判断,应该是页面较为复杂时,onLoad、onReady、onShow等事件均不能保证想要获取的节点已经载入,所以获取不到。
有的人使用定时器来解决,也就是页面载入后延时几秒钟才去获取,但我觉得这种方法太丑陋了,而且依然有失败的可能。
我的解决方案是在某个耗时较久的异步事件的成功回调中调用,比如我要动态计算高度的view是用于装载某个数据列表的,那么我就在获取这个异步数据的成功回调中获取所需计算的wxml节点的信息,然后再设置所需的高度。
请问解答了吗?遇到同样的问题
凭印象,好像是因为setData是异步的。但是文档没有说明白。也没有setData的回调。后面好像官方已经修复了的。