收藏
回答

自定义组件怎么触发slot中的事件

如果我有一个自定义组件是这样的,

<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo='getUserInfo'>

    <slot></slot>

</button>


而在某个页面中引用它(zat-auth就是上边的自定义组件)

<zat-auth>

    <button bindtap="test">测试按钮</button>

</zat-auth>

需要怎么操作才可以监听到test事件呢?




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

1 个回答

  • 张娟娟
    张娟娟
    2018-06-21

    在组件上绑定需要触发的事件,在组件中调用triggerEvent进行触发

    参考

    https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html

    2018-06-21
    赞同
    回复 4
    • leyi
      leyi
      2018-06-21

      <zat-auth bindfirsetevent="firsteve">

          <button bindtap="test">测试按钮</button>

      </zat-auth>


      在js文件中

      methods: {

          getUserInfo(e){

              console.log('-------- getUserInfo ------ ',e)

              this.triggerEvent('firsetevent', {haha: e})

      }



      组件通过triggerEvent应该是只能触发firsteve事件吧,而不能触发test事件,



      2018-06-21
      回复
    • 张娟娟
      张娟娟
      2018-06-21回复leyi

      你可以直接把test中要做的事,直接放到firsetevent或者在firsetevent中调用this.test()触发test事件

      2018-06-21
      回复
    • leyi
      leyi
      2018-06-21

      firseve事件和test,这俩是不太一样的,我感觉就是firseve就是在自定义组件上绑定的,而 test不属于这个自定义管辖范围,所以写它好像就不起作用。

      2018-06-21
      回复
    • leyi
      leyi
      2018-06-21回复张娟娟

      < zat-auth  bindfirsetevent="firsteve" >

          <view>一些内容</view>

          <view>.........</view>

          < button   bindtap = "test" > 测试按钮 </ button >

      </ zat-auth >


      这样做的话确实可以触发test事件,可是我只是想让点击那个按钮的时候,触发test事件,事实却是不管你点哪里它都触发了。。。

      2018-06-21
      回复