优化我的列表滚动条位置的保存逻辑

pull/389/head
lyswhut 2020-09-28 01:33:06 +08:00
parent 3bb0fcc4cd
commit 5949e8fb3f
1 changed files with 7 additions and 8 deletions

View File

@ -86,7 +86,6 @@ export default {
// isShowEditBtn: false, // isShowEditBtn: false,
isShowDownloadMultiple: false, isShowDownloadMultiple: false,
delayShow: false, delayShow: false,
routeLeaveLocation: null,
isShowListAdd: false, isShowListAdd: false,
isShowListAddMultiple: false, isShowListAddMultiple: false,
delayTimeout: null, delayTimeout: null,
@ -289,18 +288,14 @@ export default {
// }, // },
beforeRouteLeave(to, from, next) { beforeRouteLeave(to, from, next) {
this.clearDelayTimeout() this.clearDelayTimeout()
this.routeLeaveLocation = (this.list.length && this.$refs.dom_scrollContent.scrollTop) || 0 this.setListScroll({ id: this.listId, location: (this.list.length && this.$refs.dom_scrollContent.scrollTop) || 0 })
next() next()
}, },
created() { created() {
this.listId = this.$route.query.id || this.defaultList.id this.listId = this.$route.query.id || this.defaultList.id
this.setPrevSelectListId(this.listId) this.setPrevSelectListId(this.listId)
this.handleScroll = throttle(e => { this.handleSaveScroll = throttle((listId, location) => {
if (this.routeLeaveLocation) { this.setListScroll({ id: listId, location })
this.setListScroll({ id: this.listId, location: this.routeLeaveLocation })
} else {
this.setListScroll({ id: this.listId, location: e.target.scrollTop })
}
}, 1000) }, 1000)
this.listenEvent() this.listenEvent()
}, },
@ -310,6 +305,7 @@ export default {
}, },
beforeDestroy() { beforeDestroy() {
this.unlistenEvent() this.unlistenEvent()
this.setListScroll({ id: this.listId, location: (this.list.length && this.$refs.dom_scrollContent.scrollTop) || 0 })
}, },
methods: { methods: {
...mapMutations(['setPrevSelectListId']), ...mapMutations(['setPrevSelectListId']),
@ -369,6 +365,9 @@ export default {
this.restoreScroll(this.$route.query.scrollIndex, false) this.restoreScroll(this.$route.query.scrollIndex, false)
} }
}, },
handleScroll(e) {
this.handleSaveScroll(this.listId, e.target.scrollTop)
},
clearDelayTimeout() { clearDelayTimeout() {
if (this.delayTimeout) { if (this.delayTimeout) {
clearTimeout(this.delayTimeout) clearTimeout(this.delayTimeout)