我需要利用 wx.createSelectorQuery().select('#myid') 来获得界面上某组件的属性,
但是该组件是通过setData动态生成的,所以若是在渲染完毕之前尝试获取该组件,就会得到null。
请问,有什么方法,能保证在“setData界面动态渲染完毕”之后,安全地去获得动态生态城的组件吗?
代码示例:
< view wx:for = "{{mylist}}" wx:key = "id" id = "{{item.id}}" > {{item.text}} </ view > |
Page({ data: { mylist: [], }, doSomething: function () { // 动态设置数据并生成界面组件(setData似乎是一个异步调用) this .setData([ {id: 'a' , text: 'a' }, {id: 'b' , text: 'b' }, {id: 'c' , text: 'c' }, ]); // 获得某个动态生成的组件的属性 wx.createSelectorQuery().select( '#b' ).fields({rect: true }, (result) => { // 在这里是想获得组件'#b'的top属性 // 但是,当数据量较大时,在界面渲染完毕前,脚本就已经执行到这里,此时组件还没有生成,只能得到null。 // 虽然可以用setTimeout延迟执行本段代码,数据量不定,延迟的时长也无法预测,不安全。 let top = result[0].top; }).exec(); }, }); |
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#pageprototypesetdataobject-data-function-callback
哦,原来还有一个回调参数,没注意。
多谢啦!