boundingClientRect换了个域名请求后就无效的问题?
发布于 7 年前 作者 bmo 6963 次浏览 来自 官方Issues

大佬求教,两个域名请求下来的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()

},

1 回复

问题已解决,原因及解决方法如下:

加个定时器:因为这个获取元素的方法是异步的,所以只有拖延点时间再去获取,不然有可能元素还未加载出来,会返回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)

回到顶部