收藏
回答

wx:if/else内放置组件 无法通过selectComponent获取实例

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 6.5.3 2.3.2

- 当前 Bug 的表现(可附上截图)

wx:if/else内放置组件 或 组件使用wx:if/else 无法通过selectComponent获取组件实例。

- 预期表现

wx:if/else条件成立,组件在页面存在时,通过selectComponent方法可获取组件实例。

- 复现路径

无。

- 提供一个最简复现 Demo

<!-- demo wxml -->


<!-- 例子 1-->

<component id="component"></component>


<!-- 例子 2 -->

<component wx:if="{{flag}}" id="component"></component>


<!-- 例子 3 -->

<view wx:if="{{flag}}">

<component id="component"></component>

</view>

<!-- 例子 4 -->

<view wx:else>

<component id="component"></component>

</view>


<!-- demo js -->

console.log( this.selectComponent("#component") )

// 前提:component已有,flag=true

// 例子 1 输出:组件实例对象 --成功

// 例子 2 输出:null --失败

// 例子 3 输出:null --失败

// 例子 4 输出:null --失败


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

3 个回答

  • 卢霄霄
    卢霄霄
    2018-11-03

    用hidden隐藏呗。。因为wx:if为false的时候,界面上根本不渲染的

    2018-11-03
    有用 1
    回复 6
    • 俊杰Hiro
      俊杰Hiro
      2018-11-05

      这是也是我的临时解决方法,但是,上述的例子我已经说明:即使wx:if为true的时候,也就是页面已经渲染后,组件的实例也是获取不到的。

      2018-11-05
      回复
    • 卢霄霄
      卢霄霄
      2018-11-05回复俊杰Hiro

      那你需要在setData回调里,确保已经渲染出来后,再select。如果不行的话,可以做个代码片段,我帮你看看

      2018-11-05
      回复
    • 俊杰Hiro
      俊杰Hiro
      2018-11-05回复卢霄霄

      提问前我已经实验过了,当然您也可以用最简单的结构试一下~

      2018-11-05
      回复
    • 卢霄霄
      卢霄霄
      2018-11-05回复俊杰Hiro

      好。我试试去。。模拟器上能复现?

      2018-11-05
      回复
    • 俊杰Hiro
      俊杰Hiro
      2018-11-05回复卢霄霄

      能的 我也是在开发工具发现的这个问题,而且还坑了我很久。。

      2018-11-05
      回复
    查看更多(1)
  • 晨曦醉
    晨曦醉
    2020-04-28

    请问有解决方案了么 我在小程序中用echars画图表时也遇到这个问题了

    2020-04-28
    有用
    回复
  • 柏超
    柏超
    2019-01-02

    如果外层循环加上 block  v-if

    内层使用v-for

    components已经初始化 但是抓不到component

    2019-01-02
    有用
    回复
登录 后发表内容