一个程序问题
程序目的,聊天程序首次打开的时候后台请求数据填充到qList中,获取内容的高度向下滚动到最低处
}).then(res => {this.qList = res.data.data.reverse();/*** 获取内容的高度,当发送新消息时自动滚动到最底部* 当内容增加时,重新计算总view的高度*/(() => {let header = uni.createSelectorQuery().select(".scroll");header.fields({size: true,scrollOffset: false},data => {this.pageHeight = data.height;console.log(this.pageHeight, "-----pageHeight------");uni.pageScrollTo({scrollTop: this.pageHeight,duration: 300});}).exec();})();
但是程序最后只滚动了267px,并没有把内容填充后的高度计算进去
把这个程序放到一个setTimeout中发现可以了
}).then(res => {this.qList = res.data.data.reverse();/*** 获取内容的高度,当发送新消息时自动滚动到最底部* 当内容增加时,重新计算总view的高度* 放setTimeout宏任务队列等待视图渲染完获取高度*/setTimeout(() => {let header = uni.createSelectorQuery().select(".scroll");header.fields({size: true,scrollOffset: false},data => {this.pageHeight = data.height;console.log(this.pageHeight, "-----pageHeight------");uni.pageScrollTo({scrollTop: this.pageHeight,duration: 300});}).exec();}, 0);});
计算进去了追加内容后的高度
