uni-popup 弹出框点击空白处不让消失
时间: 2024-10-23 13:05:35 浏览: 68
uni-popup 是 UniApp 中的一个组件,用于创建弹出窗口。如果你想要实现当用户点击屏幕其他地方而不是特定按钮时,让弹出框不自动关闭,你可以通过监听全局的 touchend 或 click 事件,并设置一个 flag 来控制这个行为。这里是一个简单的示例:
```javascript
Page({
data: {
isPopupShowing: false, // 初始化弹出框显示状态为false
handleTouchEnd(e) { // 监听 touchend 事件
if (!this.data.isPopupShowing) return; // 如果弹出框未显示,则忽略此操作
this.setData({ isPopupShowing: false }); // 当点击空白处时隐藏弹出框
},
handleClickOutside(e) { // 监听 click 事件,处理全局点击
const popupNode = uni.getSelectorQuery().select('#yourPopupId'); // 替换为实际的popup节点ID
if (popupNode && !popupNode.contains(e.target)) {
this.setData({ isPopupShowing: false });
}
},
},
openPopup() {
this.setData({ isPopupShowing: true });
uni.addEventListener('touchend', this.handleTouchEnd);
uni.addEventListener('click', this.handleClickOutside);
},
closePopup() {
this.setData({ isPopupShowing: false });
uni.removeEventListener('touchend', this.handleTouchEnd);
uni.removeEventListener('click', this.handleClickOutside);
},
})
```
在这个例子中,`openPopup` 方法会在需要时打开弹出框并添加事件监听,而 `closePopup` 方法则在关闭时移除这些监听。当你点击屏幕外部时,只要当前弹出框处于显示状态,它就会关闭。
阅读全文