收藏
回答

自定义事件在组件初始化完成的时候不会触发

问题模块 框架类型 问题类型 终端类型 操作系统 微信版本 基础库版本
框架 小程序 Bug 微信iOS客户端 6.6.6 2.0.9

论坛里的大神,您们好 ^ _ ^

1、业务是:该组件在出现的时候时候有一个默认选中的效果。

2、默认选中的效果已经ok,默认选中之后我需要触发一个事件来告诉组件外部的 页面逻辑,表示已经选中,可以继续下面的操作了。

3、问题就出现在这里:自定义事件没有被触发。用户在选择其他的信息时候,如果选择完成,自定义事件是触发的。但是就默认选中的情况下没有被触发。已经进入 if 体。只有自定义事件没有被触发


最后一次编辑于  2018-06-01  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 简简
    简简
    2018-06-01
    1. 把let换成var, let在部分机型中会不好用,这个上线之后会有问题,而且不报错,所以不要用let

    2. var that =this;  要在let arr = [];后面定义var that =this;触发不了的原因是因为this作用域错了,that.triggerEvent('select', skusObj

    2018-06-01
    赞同
    回复 7
    • 无始
      无始
      2018-06-01

      您好,这个我用了另一种解决方式, 开一个延迟器就可以触发自定义事件了:


      但是我不清楚为什么加一个 延迟器就可以触发,不加延迟器就触发不了。您可以解答一下吗?

      2018-06-01
      回复
    • 简简
      简简
      2018-06-01回复无始

      不要用setTimeout网速慢加载慢的时候会有问题的,我已近告诉你怎么改了,照着改就行了,不该上线之后再翻我的回答吧

      2018-06-01
      回复
    • 无始
      无始
      2018-06-01回复简简

      但是您说的this指向问题,还请您看下es6 语法。

      2018-06-01
      回复
    • 无始
      无始
      2018-06-01回复简简

      我的理解应该是小程序的ui 层 与 逻辑 层 的异步 而导致 bug。这里的setTimeout 并不牵扯任何 HTTP 请求相关的逻辑。我是数据请求成功之后才将数据传递给组件的。通过组件的 properties 属性 下的   observer 方法监听 组件的数据传递。只有当组件拿到真正 的 数据 才会执行 默认选中的逻辑



      2018-06-01
      回复
    • 无始
      无始
      2018-06-01回复简简

      这是组件的接口部分代码:


      2018-06-01
      回复
    查看更多(2)