今天使用popup组件做了个小程序底部弹出层,但是发现textarea的层级太高,文字会穿透组件显示在最上面,所以就准备打开组件时就将textarea进行隐藏,关闭组件进行显示,但是因为组件蒙版点击也是可以关闭组件的,所以就需要将蒙版点击操作去掉,根据组件介绍文档在组件内设置maskClick="false"可以关闭,但是设置后发现无效,这个问题怎么解决呢?
路人甲方
- 发布:2020-08-09 11:54
- 更新:2022-02-21 13:56
- 阅读:5001
8 个回复
5***@qq.com
下面改动亲测有效:
在uni-popup源码中,找到点击蒙版关闭的方法 onTap()
里面的 if (!this.mkclick) return; 这句无效。因为this.mkclick在此时是 string类型。
大家可以用 typeof 打印一下。
不管 true 还是 false,作为字符串,if(!this.mkclick) 永远返回假,所以不会执行return。
只需把代码改成以下即可:
1***@qq.com
1.确认popup组件设置了id,这很重要!具体原因不知道,我自己的就是没加id
j***@163.com
铁子,这个问题解决了吗,是怎么回事呀
枫枫枫枫枫
需要去 popup源码看一下
maskClick: {
handler: function(val) {
this.mkclick = val
},
immediate: true
}
修改watch监听
2020-09-23 14:58
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
源码现在是这样写的 兼容新旧字段且都默认为true 所以得设两个值才有用 坑!!!!!