收藏
回答

如何判断视图已渲染完成

开发过程中有如下需求:

动态获取一个盒子的高度(因为盒子是由wx:for的内容撑起),并将该高度设置为另一容器的高度。


但在实际开发过程中发现使用selectQuery获取节点信息时,发现如下问题: 例如当前wx:for的data为长度为10的array,但在获取节点信息时获取到的array为0,

此时为增加array的长度为11,执行selectQuery,获取到的array为10;

即每一次数据更新后,执行selectQuery获取节点信息时,节点还未被新数据更新,还是上一次的旧数据。


如何判断节点已被新数据渲染?

最后一次编辑于  01-10
回答关注问题邀请回答
收藏

3 个回答

  • 卢霄霄
    卢霄霄
    01-10

    this.setData({     list: newList },()=>{     // 就是这里啦 })

    01-10
    赞同 1
    回复 3
    • .
      .
      01-10

      因为是使用mpvue开发的,所以不能用this.setData(),很难受

      01-10
      回复
    • 卢霄霄
      卢霄霄
      01-10回复.

      召唤一个mpvue玩家!

      01-10
      回复
    • .
      .
      01-10回复卢霄霄

      已经快哭了兄弟,这东西太难用了。

      01-10
      回复
  • 抬头忘了谁
    抬头忘了谁
    01-11

    mpvue也是基于vue的,可以用this.$nextTick(() => {// 这里试试})

    01-11
    赞同
    回复 3
    • .
      .
      01-11

      这个我试过了,不生效,就很头疼。

      01-11
      回复
    • 抬头忘了谁
      抬头忘了谁
      01-11回复.

      笨办法用setTimeout...调整个合适的值emm..

      01-11
      回复
    • .
      .
      01-11回复抬头忘了谁

      我本来也这么想的哈哈哈,但是还是不太放心,毕竟不同手机配置不一样。碰到卡得要死得手机就gg了。

      01-11
      回复
  • Lee
    Lee
    01-10

    这个应该可以通过布局来解决问题,这样就免于计算高度了。

    01-10
    赞同
    回复 3
    • .
      .
      01-10

      <movable-area>     <div class="body">         <block>             <div></div>         </blcok>     </div>     <movable-view>         <button class="customerService"></button>    </movable-view> </movable-area> 目标是要让customerService能够在整一个body中移动,但是这个div因为是由block中的内容撑起来了,所以movable的高度需要与body一致才能实现这个效果。但是现在无法准确获取到body的高度。

      01-10
      回复
    • Lee
      Lee
      01-10回复.

      没用过mpvue。有规律的话,可以通过你的array数据来计算,不获取dom;把button的高度也弄个变量;

      01-10
      回复
    • .
      .
      01-10回复Lee

      嗯这样也可以,谢谢

      01-10
      回复