浏览代码

:recycle: breaking up intersection callback

tags/0.9.0
J 4 年前
父节点
当前提交
8cdedc6da5
共有 1 个文件被更改,包括 16 次插入10 次删除
  1. 16
    10
      vue-theme/src/pages/list.vue

+ 16
- 10
vue-theme/src/pages/list.vue 查看文件

47
     data() {
47
     data() {
48
         return {
48
         return {
49
             page: 0,
49
             page: 0,
50
-            perPage: 9,
50
+            perPage: 18,
51
             keepFetching: true 
51
             keepFetching: true 
52
         }
52
         }
53
     },
53
     },
141
         },
141
         },
142
         setIntersectionLoader() {
142
         setIntersectionLoader() {
143
             if(!this.type) return console.error('cannot setup interseciton handler for undefined type')
143
             if(!this.type) return console.error('cannot setup interseciton handler for undefined type')
144
-            
144
+
145
             console.warn('setting up intersection handler for:', this.type)
145
             console.warn('setting up intersection handler for:', this.type)
146
             const footerEl = document.querySelector(".footer-wrapper footer")
146
             const footerEl = document.querySelector(".footer-wrapper footer")
147
             console.warn('attach to: ',footerEl)
147
             console.warn('attach to: ',footerEl)
148
             if(!footerEl) return
148
             if(!footerEl) return
149
 
149
 
150
             window.addEventListener("load", e => {
150
             window.addEventListener("load", e => {
151
-                const observer = new IntersectionObserver(this.loadMorePosts, {
152
-                    rootMargin: "0px 0px -50px 0px",
151
+                const onIntersection = () => {
152
+                    console.log('intersected...')
153
+                    this.loadMorePosts()
154
+                    console.log('loaded morePosts...')
155
+                }
156
+                const observer = new IntersectionObserver(onIntersection, {
157
+                    rootMargin: "0px 0px -20px 0px",
153
                 })
158
                 })
154
                 observer.observe(footerEl)
159
                 observer.observe(footerEl)
155
             }, false)
160
             }, false)
156
         },
161
         },
157
-        unsetIntersectionLoader() {
158
-            console.warn('unsetting intersection handler for:', this.type)
162
+        unsetIntersectionLoader(type) {
163
+            if(!type) return console.error('cannot unset intersection handler for undefined type...')
164
+            console.warn('unsetting intersection handler for:', type)
159
             window.removeEventListener("load", e => {}, false)
165
             window.removeEventListener("load", e => {}, false)
160
         },
166
         },
161
         clearAndInitPostList() {
167
         clearAndInitPostList() {
172
         // This only fires navigating from
178
         // This only fires navigating from
173
         // a list page, to another list page
179
         // a list page, to another list page
174
         type(newType, oldType){
180
         type(newType, oldType){
181
+            this.unsetIntersectionLoader(oldType)
182
+            
175
             console.log('old:', oldType)
183
             console.log('old:', oldType)
176
             console.log('new:', newType)
184
             console.log('new:', newType)
185
+            
177
             if(!postTypes.includes(newType)) return console.warn('type not found...')
186
             if(!postTypes.includes(newType)) return console.warn('type not found...')
178
-            this.clearAndInitPostList()
179
             this.setIntersectionLoader()
187
             this.setIntersectionLoader()
188
+            this.clearAndInitPostList()
180
         },
189
         },
181
     },
190
     },
182
     mounted() {
191
     mounted() {
183
         this.clearAndInitPostList()
192
         this.clearAndInitPostList()
184
         this.setIntersectionLoader()
193
         this.setIntersectionLoader()
185
-    },
186
-    beforeUnmount() {
187
-        this.unsetIntersectionLoader()
188
     }
194
     }
189
 }
195
 }
190
 </script>
196
 </script>

正在加载...
取消
保存