Uniapp点透事件与阻止

案例

<view class="item">
  <view class="item-title">
    <text>日期</text>
  </view>
  <view class="item-content">
    <view class="item-content-timeBox">
      <u-picker
        mode="time"
        v-model="showStartTimePicker"
        @confirm="confirmStartTime"
      ></u-picker>
      <view
        class="item-content-chooseTime"
        @click.native.stop="chooseStartTime"
        :class="{ noTimeStyle: startTime == null }"
      >
        {{ startTime || "请选择开始日期" }}
        <u-icon
          v-show="startTime != null"
          @click.native.stop="clearStartTime"
          class="clearTimeBtn"
          name="close-circle"
          size="30"
        ></u-icon>
      </view>
    </view>
    <text class="timeBridge">至</text>
    <view class="item-content-timeBox">
      <u-picker
        mode="time"
        v-model="showEndTimePicker"
        @confirm="confirmEndTime"
      ></u-picker>
      <view
        class="item-content-chooseTime"
        @click.native.stop="chooseEndTime"
        :class="{ noTimeStyle: endTime == null }"
      >
        {{ endTime || "请选择结束日期" }}
        <u-icon
          v-show="endTime != null"
          @click.native.stop="clearEndTime"
          class="clearTimeBtn"
          name="close-circle"
          size="30"
        ></u-icon>
      </view>
    </view>
  </view>
</view>

问题:

        点击删除icon时候,触发了下方的picker组件的click事件。

错误:

        如果使用@tap.stop阻止传播 的话会报错:Error: "TypeError: $event.stopPropagation is not a function" 原因是:Uniapp不支持stopPropagation,因为这里的event对象并非浏览器的evnet对象,其本来没有stopPropagation方法,文档中也从未提及支持stopPropagation方法,实现中有stopPropagation方法是为了避免开发者使用引用的第三方代码使用了 stopPropagation后报错。

解决:

        使用@click.native.stop

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值