Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import { handleLocationHash } from '~/lib/utils/common_utils'; export default { inject: ['vscrollParent'], model: { prop: 'index', }, props: { index: { type: Number, required: true, }, }, watch: { index: { handler() { const { index } = this; if (index < 0) return; this.scrollToIndex(index); if (!this.vscrollParent.itemsWithSize[index].size) { this.$_itemsWithSizeWatcher = this.$watch('vscrollParent.itemsWithSize', async () => { await this.$nextTick(); if (this.vscrollParent.itemsWithSize[index].size) { this.$_itemsWithSizeWatcher(); await this.$nextTick(); this.scrollToIndex(index); } }); } }, immediate: true, }, }, beforeDestroy() { if (this.$_itemsWithSizeWatcher) this.$_itemsWithSizeWatcher(); }, methods: { async scrollToIndex(index) { this.vscrollParent.scrollToItem(index); this.$emit('update', -1); await this.$nextTick(); setTimeout(() => { handleLocationHash(); }); }, }, render(h) { return h(null); }, }; |