路人甲方
路人甲方
  • 发布:2020-08-09 11:54
  • 更新:2022-02-21 13:56
  • 阅读:4280

uni-popup 设置maskClick="false"无效

分类:uni-app

今天使用popup组件做了个小程序底部弹出层,但是发现textarea的层级太高,文字会穿透组件显示在最上面,所以就准备打开组件时就将textarea进行隐藏,关闭组件进行显示,但是因为组件蒙版点击也是可以关闭组件的,所以就需要将蒙版点击操作去掉,根据组件介绍文档在组件内设置maskClick="false"可以关闭,但是设置后发现无效,这个问题怎么解决呢?

2020-08-09 11:54 负责人:无 分享
已邀请:
5***@qq.com

5***@qq.com

下面改动亲测有效:

在uni-popup源码中,找到点击蒙版关闭的方法 onTap()

里面的 if (!this.mkclick) return; 这句无效。因为this.mkclick在此时是 string类型。
大家可以用 typeof 打印一下。

不管 true 还是 false,作为字符串,if(!this.mkclick) 永远返回假,所以不会执行return。

只需把代码改成以下即可:

if(typeof this.mkclick === 'string') {  
    if(this.mkclick === 'false') return;  
} else {  
    if (!this.mkclick) return;  
}  
this.close();
1***@qq.com

1***@qq.com

1.确认popup组件设置了id,这很重要!具体原因不知道,我自己的就是没加id

  1. 若无效,将:maskClick="false"换成:mask-click="false"
j***@163.com

j***@163.com

铁子,这个问题解决了吗,是怎么回事呀

  • 枫枫枫枫枫

    需要去 popup源码看一下

    maskClick: {

    handler: function(val) {

    this.mkclick = val

    },

    immediate: true

    }

    修改watch监听

    2020-09-23 14:58

9***@qq.com

9***@qq.com

到uni-popup的源码中,把mkclick改为fasle,把传过去的maskClick也改为false,点击蒙版就不能关闭了

每日聚福

每日聚福

maskClick: {
handler: function(val) {
this.mkclick = val
},
immediate: true
}

将博

将博

:maskClick="false" 改为 :maskClick="1===0" 诸如此类额

[已删除]

[已删除]

maskClick="false" 就是字符串 只有:maskClick="false"里面的值才是表达式...老铁,vue的机制先看看吧

1***@qq.com

1***@qq.com

this.mkclick = this.maskClick || this.isMaskClick

源码现在是这样写的 兼容新旧字段且都默认为true 所以得设两个值才有用 坑!!!!!

 :maskClick="false" :isMaskClick="false"

该问题目前已经被锁定, 无法添加新回复