大佬求教,两个域名请求下来的res.data.data都是一样的,这个可以确认,但我部署到easymock上后,发现右页面联动左面的失效了,
逐步调试后,发现是boundingClientRect无效了,url改为localhost又可以联动了,是渲染的问题吗,而且很奇怪,我试过几次(但概率很少)
不断编译它,easymock的请求后也能左右联动,是开发工具的bug吗?还是我哪里出错了。关键代码如下。。。
//请求后台
onLoad: function () {
var that = this;
wx.showLoading({
title: ‘加载中’,
})
wx.request({
url: ‘http://localhost:9000’,
// url:‘https://www.easy-mock.com/mock/5d6149240c79bc7754188b37/example/base’,
success:function(res)
{
wx.hideLoading();
that.setData({
dataList : res.data.data
})
},
})
},
onReady: function(){
let query = wx.createSelectorQuery().in(this);
console.log(query);
let heightArr = [];
let s = 0;
query.selectAll(’.content’).boundingClientRect((react)=>{
react.forEach((res)=>{
s+=res.height;
heightArr.push(s);
}
);
this.setData(
{
heightArr : heightArr
})
});
query.select(’.list-shop-menu’).boundingClientRect((res)=>
{
console.log(res.height);
this.setData(
{
containerH :res.height
}
)
}).exec()
},
问题已解决,原因及解决方法如下:
加个定时器:因为这个获取元素的方法是异步的,所以只有拖延点时间再去获取,不然有可能元素还未加载出来,会返回null
setTimeout(function(){
let query = wx.createSelectorQuery();
let heightArr = [];
let s = 0;
query.selectAll(’.content’).boundingClientRect((react)=>{
react.forEach((res)=>{
s+=res.height;
heightArr.push(s);
}
);
that.setData(
{
heightArr : heightArr
})
});
query.select(’.list-shop-menu’).boundingClientRect((res)=>
{
that.setData(
{
containerH :res.height
}
)
}).exec()
},500)