收藏
回答

boundingClientRect换了个域名请求后就无效的问题?

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

},


最后一次编辑于  2019-08-27
回答关注问题邀请回答
收藏

1 个回答

  • 辉
    2019-08-28

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

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




    2019-08-28
    有用 1
    回复
登录 后发表内容
问题标签