每次使用createSelectorQuery时,因为和数据赋值一起调用,所以导致只能获取到上一次渲染的数据,
如果能让这个函数 在渲染之后调用,就可以完美解决了
暂时不知道怎么监听页面是否渲染。
所以只能使用 setTimeout临时代替一下
scrollToBottom: function () {
let query = uni.createSelectorQuery();
query.in(this).selectAll('.main-item').boundingClientRect();
query.in(this).select('#scrollview').boundingClientRect();
query.exec((res) => {
let mitemHeight = 0;
console.log("元素",res);
res[0].forEach((rect) => mitemHeight = mitemHeight + rect.height + 40)
if (mitemHeight > that.solHeight) {
that.scrollTop = (mitemHeight + 100)
}
})
}
注意一下
- 使用
uni.createSelectorQuery()
需要在生命周期mounted
后进行调用。 - 自定义组件编译模