uni-app uni.$on里边嵌套uni.showModal和uni.showToast不展示
uni-app uni.$on里边嵌套uni.showModal和uni.showToast不展示
示例代码:
uni.$on('chooseCoupon', data => {
uni.showModal({
title: '提示',
content: '当前商品不可使用该优惠券',
showCancel: false,
confirmText: '我知道了'
})
操作步骤:
如上,未弹出提示
预期结果:
正常提示
实际结果:
未弹出
bug描述:
uni.$on里边嵌套uni.showModal和uni.showToast不展示
| 开发环境 | 版本号 | 项目创建方式 |
|-------------------|--------|--------------|
| Windows | win10 | HBuilderX |
| HBuilderX | 4.29 | |
| 第三方开发者工具 | 1.06 | |
| 基础库 | 3.7.7 | |
更多关于uni-app uni.$on里边嵌套uni.showModal和uni.showToast不展示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
我测试是可以触发
你是怎么使用的 能发下复现demo吗?
更多关于uni-app uni.$on里边嵌套uni.showModal和uni.showToast不展示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
出不来的话可以加个延时再调用
如果还没有解决,可以参考这个类似的帖子 https://ask.dcloud.net.cn/question/208721
这个问题的原因是uni.$on事件监听和uni.showModal/uni.showToast的异步执行时机问题。在uni-app中,uni.$on的回调函数执行时可能处于特殊上下文环境,导致模态框无法正常弹出。
解决方案有以下几种:
- 使用setTimeout包裹showModal调用:
uni.$on('chooseCoupon', data => {
setTimeout(() => {
uni.showModal({
title: '提示',
content: '当前商品不可使用该优惠券',
showCancel: false,
confirmText: '我知道了'
})
}, 100)
})