再开发小程序的时候出现了穿透的效果,采用的是微信小程序和vant,才采用van-popup存在穿透的问题,所以就得去解决问题。
微信开发程序和uniapp的弹窗遮罩层的穿透问题
可以在van-popup外面包裹一个view标签,然后采用微信小程序的方法绑定事件,事件绑定然后return出去,就可以实现对应的效果。
方法一
<view catchtouchmove="touchHandler">
</view>
touchHandler: function() {
return false;
},
方法二
transpileDependencies: true,
可能这时你发现在测试机上还是存在这个问题,这时就需要我们继续去解决,最终在官方文档发现在真机下这个功能是没有问题的,但是在测试机上会存在这个问题,至此问题解决了
返回上一页传递参数
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //获取上一个页面
prevPage.setData({ //修改上一个页面的变量
atlas_id: e.currentTarget.dataset.id
})
wx.navigateBack({ //返回上一页
delta: 1
})
第一步,在子页面点击上一步或者保存数据请求成功以后添加如下代码、
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
mydata: {
id:1,
b: 125
}
})
wx.navigateBack({//返回
delta: 1
})
第二部,在父组件里的onshow生命周期里获取参数,对了,前提是需要你在data里建一个mydata对象,如果传过来的是字符串,mydata建立为字符串,就是对应一下会比较好
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
let json = currPage.data.mydata;
console.log(json)//为传过来的值
Page({
/**
* 页面的初始数据
*/
data: {},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var pages = getCurrentPages();
// 上一页面栈
var prevPage = pages[pages.length - 2];
// 上一页面跳转携带的参数
console.log(prevPage.options);
// 上一页面路由
console.log(prevPage.route);
// 上以页面的Data数据
console.log(prevPage.data);
// 调用上一页函数
prevPage.changeName("aaa");
// 修改上一页 data 的数据
prevPage.setData({
name: 'aaa'
})
},
})