function
能夠實現瀑布流式累加載。vue
install
- npm i vue-infinite-loading --save
- import InfiniteLoading from 'vue-infinite-loading' 或 const InfiniteLoading require('vue-infinite-loading')
- <script src="/path/to/vue-infinite-loading/dist/vue-infinite-loading.js"></script>
usage
- 須要累加載頁面元素時。
- 放在頁面底部。
- 在InfinityLoading組件中監聽infinite事件。
infinite事件觸發的函數有一個特殊事件參數($state)。
$state.loaded() => 表示已經加載成功,用於當次加載數據成功時。此時出現slot="no-more"的內容
$state.complete() => 表示已經加載完成,用於加載數據結束時。此時出現slot="no-resluts"的內容
$state.reset() => 表示
<tag slot="no-more"></tag> => 表示在沒有更多元素時(即加載完數據時)顯示
在InfinityLoading組件中設置ref="child"。運行this.$refs.child.$emit('$InfiniteLoading:reset')可使用組件回到初始狀態,此時組件會當即請求新數據。
能夠寫多個參數 <infinite-loading @infinite="handler($event, arg0, arg1, arg2)"></infinite-loading>npm
properties
- distance InfiniteLoading距離底部多遠時觸發加載數據的事件。
- spinner 等待加載數據時的動畫。 default/bubbles/circles/spiral/waveDots
- ref
- direction 觸發加載數據的滑動方法 bottom/top
slot
- no-resluts
- no-more
- spinner
在服務端渲染(ssr)
- use
import InfiniteLoading from 'vue-infinite-loading/src/components/InfiniteLoading.vue'
import InfiniteLoading from 'vue-infinite-loading'
- npm i less less-loader --save-dev
與第三方滾動插件一塊兒使用。
(我不會那這些第三方插件,因此我不會處理這種狀況)less
手動觸發加載數據
- 設置一個加載按鈕,爲其綁定加載事件。
- 加載按鈕與InfinityLoaing組件的顯示互斥。(v-if, v-else)
- 頁面初始化時,渲染加載按鈕(也就是說不渲染InfiniteLoading組件)。
- 點擊加載按鈕時。改變加載按鈕的顯示條件。出現InfiniteLoading組件,它開始工做。
- InfiniteLoading加載數據後再次改變加載按鈕的顯示條件。