收藏
回答

如何判断视图已渲染完成

开发过程中有如下需求:

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


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

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

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


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

回答关注问题邀请回答
收藏

3 个回答

  • 卢霄霄
    卢霄霄
    2019-01-10

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

    2019-01-10
    有用 1
    回复 3
    • .
      .
      2019-01-10

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

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

      召唤一个mpvue玩家!

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

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

      2019-01-10
      回复
  • 2019-01-11

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

    2019-01-11
    有用
    回复 3
    • .
      .
      2019-01-11

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

      2019-01-11
      回复
    • 2019-01-11回复.

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

      2019-01-11
      回复
    • .
      .
      2019-01-11回复

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

      2019-01-11
      回复
  • 2019-01-10

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

    2019-01-10
    有用
    回复 3
    • .
      .
      2019-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的高度。

      2019-01-10
      回复
    • 2019-01-10回复.

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

      2019-01-10
      回复
    • .
      .
      2019-01-10回复

      嗯这样也可以,谢谢

      2019-01-10
      回复
登录 后发表内容