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的回调函数执行时可能处于特殊上下文环境,导致模态框无法正常弹出。

解决方案有以下几种:

  1. 使用setTimeout包裹showModal调用:
uni.$on('chooseCoupon', data => {
    setTimeout(() => {
        uni.showModal({
            title: '提示',
            content: '当前商品不可使用该优惠券',
            showCancel: false,
            confirmText: '我知道了'
        })
    }, 100)
})
回到顶部