原因分析:
在微信小程序环境里,uni.showModal(也就是你封装的 showModel)只有在页面处于前台时才弹得出来 。
你把监听从 uni.once 改成 uni.on 后依旧"弹不出来",根本原因并不是事件没触发,而是触发时页面已经不可见(onHide 之后)。微信小程序的原生弹窗在页面不可见时会被系统直接忽略,所以用户看不到任何提示。
解决方案:
提示:使用nextTick包裹,在下一次页面渲染前执行
function continueRelation(data) {
nextTick(() => {
console.log('continueRelation', data, showModel)
showModel({
title: "关联配件",
content: "是否关联配件 "+data.map(e=>e.title).join('、'),
confirm: () => {
const parts = data.map(e => {
return {
taskId: oprateId.value,
partId: e.id,
partName: e.title,
partImg: e.img,
price: e.price,
quantity: e.num,
amount: e.price * e.num
}
})
console.log("parts", parts)
glPjShopOrder({
id: oprateId.value,
partList: parts
}).then(res => {
if (res.code == 200) {
showSuccess("关联成功")
const timer = setTimeout(() => {
oprateFn && oprateFn()
clearTimeout(timer);
}, 1000)
}
})
},
})
})
}