Javascript 在vue.js中的DOM更新上保留滚动位置
我有一个聊天应用程序,它加载最近的聊天信息并将它们存储在messages数组中。以前的聊天历史记录加载到scroll上,并将添加到messages数组的开头。加载历史记录时,我需要保留滚动位置Javascript 在vue.js中的DOM更新上保留滚动位置,javascript,html,vue.js,Javascript,Html,Vue.js,我有一个聊天应用程序,它加载最近的聊天信息并将它们存储在messages数组中。以前的聊天历史记录加载到scroll上,并将添加到messages数组的开头。加载历史记录时,我需要保留滚动位置 //chat.vue <div ref="chatHistory" @scroll="fetchHistory"> <div v-for="item in messages" :key="item.id"> <span>{{item.body}}
//chat.vue
<div ref="chatHistory" @scroll="fetchHistory">
<div v-for="item in messages" :key="item.id">
<span>{{item.body}}</span>
</div>
</div>
在nextTick功能中,从最终高度减去初始高度,并更新滚动位置
fetchHistory(){
if(this.$refs.messageHistory.scrollTop == 0){
var initialHeight = this.$refs.messageHistory.scrollHeight
var vm = this
this.currentPage.prevPage().then(paginator => {
vm.messages.unshift(...paginator.messages)
vm.$nextTick(() => {
vm.$refs.messageHistory.scrollTop = vm.$refs.messageHistory.scrollHeight - initialHeight
})
});
}
}
fetchHistory(){
if(this.$refs.messageHistory.scrollTop == 0){
var initialHeight = this.$refs.messageHistory.scrollHeight
var vm = this
this.currentPage.prevPage().then(paginator => {
vm.messages.unshift(...paginator.messages)
vm.$nextTick(() => {
vm.$refs.messageHistory.scrollTop = vm.$refs.messageHistory.scrollHeight - initialHeight
})
});
}
}