[告知] wx:for 导致 自定义组件无法触发事件
发布于 5 年前 作者 minsong 1205 次浏览 来自 问答

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

  <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 来组件化,真让人抓狂。

2 回复

taro大法好

补充:

  <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 组件,此次。

回到顶部