收藏
回答

这是自定义组件的bug吗

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 自定义组件中的tap事件 工具 6.6.7 2.2.0

我想创建一个列表,用于展示一些数据。

每一个列表项的内容有(标题,时间,描述)。其中时间可被修改。

基于这样的需求,我想自定义一个组件。



它内部实现了我需要的标签:

<record_card>
   <view>titleview>
   <view>tipview>
   <view>timeview>
record_card>



那么我在index页面中,就可以这样使用:

   

<block wx:for="{{infos}}" wx:for-item="info">
       <record_card info='{{info}}'>record_card>
   block>

其中infos是数据。效果如下:



因为时间可以修改,所以record_card增加了修改功能

<record_card>
   <view style="display:block;默认是可见的">
       <view>titleview>
       <view>tipview>
       <view bind:tap='showTimePicker'>timeview>
   view>
   <view style="display:none;默认是隐藏的">
       时间选择控件
       <button bind:tap='FunCancel'>取消button>
       <button bind:tap='FunOK'>确认button>
   view>
record_card>

效果如下:



现在问题在于:当修改时间界面出来后,确定按钮的tap事件会劫持整个页面,无论点哪里,都会执行FunOK,而时间选择控件点不了。


如果将:

<button bind:tap='FunCancel'>取消button>
<button bind:tap='FunOK'>确认button>
顺序改为
<button bind:tap='FunOK'>确认button>
<button bind:tap='FunCancel'>取消button>

那么取消按钮的tap事件FunCancel就会劫持整个页面的tap。


想请问下,这是怎么回事?

具体现象可以运行我提交的代码片段看看。

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

1 个回答

  • 张三
    张三
    2018-07-16

    最后发现,在确认按钮的CSS中,有一条:

    btn-choose{
     
        ...
     
        position:static;
     
    }

    将position去掉即可。但外观会有一点小影响。

    为何加上static之后,按钮会劫持整个界面的tap事件,这可能是小程序和标准HTML的差异。因为static本就是position的默认选项。但小程序中,static显然不是。


    2018-07-16
    有用
    回复
登录 后发表内容