简直折磨人,搜了大半早上的文档,也没看出来什么眉目,看了好多博客,都没啥实质性的用处,不说了,直接贴代码
<template>
<view>
<!-- scroll-with-animation="true" 这句话也尽量给加上 -->
<scroll-view scroll-y="true" class="msg-list" :style="{ height: clientHeight + 'px' }" scroll-with-animation="true" :scroll-top="scrollTopVal" @scroll="viewScroll"> <view v-for="msg in msgList.data" :key="msg.id"> <text class="msg-time">{{ msg.send_dt }}</text> <view v-if="msg.type == 1"> <view class="msg-content" :class="{ 'user-msg': msg.role !== 'admin' }" > <image class="head-img" :src="msg.avatar ? msg.avatar : '../../static/images/ico_userheadimg.png'" mode="aspectFill"></image> <text class="msg-text-content" :class="{ 'user-text-content': msg.role !== 'admin' }" >{{ msg.msg }}</text> </view> </view> <view v-if="msg.type == 2"> <view class="msg-content" :class="{ 'user-msg': msg.role !== 'admin' }" > <image class="head-img" :src="msg.avatar ? msg.avatar : '../../static/images/ico_userheadimg.png'" mode="aspectFill"></image> <image class="msg-pic" :class="{ 'msg-user-pic': msg.role !== 'admin' }" @tap="previewImage" :src="msg.msg" mode="aspectFill" ></image> </view> </view> </view> </scroll-view>
</view>
</template>
<script>
data() {
return {
clientHeight: 0,
scrollTopVal: 900,
msgList: {data: []}
}
}
</script>
getList(refresh) {
const _this = this;
let activeTab = this.msgList;
if (activeTab.isLoading) {
return;
}
if (refresh) {
activeTab.nextStart = 0;
}
activeTab.isLoading = true;
httpUtils.requestWithGet({
url: 'xxx',
data: {
start: activeTab.nextStart
},
success: result => {
console.log(result);
const data = result.data;
if (data.notice_list != undefined) {
if (refresh) {
activeTab.data = data.notice_list.reverse();
} else {
activeTab.data = data.notice_list.reverse().concat(activeTab.data);
console.log(data.notice_list);
console.log(activeTab.data);
}
activeTab.nextStart = data.next_start;
_this.scrollTopVal = _this.scrollTopVal + _this.clientHeight; // 这是重点
}
},
});
}