wx.createSelectorQuery,放在渲染页面后执行还是查不到节点啊
发布于 6 年前 作者 hluo 5087 次浏览 来自 问答

        var query = wx.createSelectorQuery();

        query.selectAll(’.temp_ad_item’).boundingClientRect();

        query.exec(function (res) {})

<view class=“temp_ad item_cell_box”>

    <image class=‘temp_ad_l’ src="/images/ad.png" ></image>

    <view  class=‘temp_ad_r  item_cell_flex’>

    <view animation="{{animation}}" class=“temp_ad_in”>

       <view  class=“temp_ad_item” wx:for="{{ad}}">

           {{item.title}}

       </view>

    </view>

    </view>

</view>

10 回复

你好,ad是空数组的时候,是没有任何 .temp_ad_item 节点的。onReady这个时机也并不保证在网络请求返回之后。

谢谢大佬,关掉了就可以了。一开始想用组件写,发现兼容不好,换回了用模板。这个最好在自定义组件那里加个注释。可能是我没好好看文档吧。麻烦了

你好,你是在什么时机调用query.exec的呢?能不能给出完整js代码?

项目配置里的基础库版本满足文档里要求的吗?要不低于1.5.0

我在开发,现在是最新的1.6.4。我刚刚打点了,直接运行一个函数不是回调的,是同步的,运行一个匿名函数会跳过这个函数的执行。如果只能延迟的话,渲染时间不确定。。那难道一直显示loading,直到能获取到节点信息?

自定义组件模式下setData现在确实少个回调函数,我们会及时修复。

但同时自定义组件模式可以保证selectorQuery和setData是顺序执行的,不需要回调。

现在setData有个回调函数,在回调函数中调用可以保证是setData的新数据已经渲染完毕。

请问启用了自定义组件吗?

最后一页大佬,文档没有具体说明callback怎么用,我自己也试过用匿名函数和有名函数来实现渲染完接着获取节点信息。但是没有效果啊。真的不知道你的callback怎么调用。

回到顶部