收藏
回答

[告知] wx:for 导致 自定义组件无法触发事件

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx:for 客户端 6.7.3 2.4.3

找个四个小时才找到,想想还是说一下吧。


  <view wx:for="{{ newInputs }}" wx:key='index'>

    <input-lock options='{{ options }}' bindhaha='test'></input-lock>

  </view>

在wx:for 中循环生成自定义组件导致自定义组件无法通过 this.triggerEvent 触发事件。

当用字面量声明数组的方式使用 wx:for 又神奇的可以触发事件了。


<block wx:for='{{ [1, 2] }}' wx:key='index'>

    <template is='lock' data='{{ options: inputs[0] }}'></template>

  </block>


接下来就是想一下怎么用字面量声明数组的方式来实现业务,

要不然就学以前的 taro 用template 来组件化,真让人抓狂。


最后一次编辑于  2018-12-28
回答关注问题邀请回答
收藏

2 个回答

  • aabb
    aabb
    01-16

    taro大法好

    01-16
    赞同
    回复
  • 金池
    金池
    2018-12-29

    补充:

      <block wx:for='{{ [1, 1] }}' wx:key='index'>

        <block wx:if="{{ index < inputs.length }}">

          <template  is="{{ 'lock' }}" data='{{ options: inputs[0] }}'></template>

        </block>

      </block>

    尝试使用 字面量数组 和 wx:if 搭配依然无法触发事件。


    尝试绑定 tap 事件,通过点击触发事件。成功触发事件。

    因上,得出最终解,使用 setTimeout 使代码的执行变为异步的,成功触发事件。

            setTimeout(() => {

              this.triggerEvent('haha')

            }, 10);


    https://developers.weixin.qq.com/s/NHa961mn7d5B


    至此,setTimeout 已经救了我三次了。

    音频组件,input 组件,此次。



    2018-12-29
    赞同
    回复