UNPKG

infinite-loading

Version:

vue-infinite-loading based on bedlate's vue-data-loading

190 lines (100 loc) 3.73 kB
# vue-data-loading [中文文档](https://github.com/bedlate/vue-data-loading/blob/master/README_CN.md) > Another component for infinite scroll and pull down/up to load data. Here is a demo: [HackNews](http://hacknews.xyz) ![vue-data-loading](https://github.com/bedlate/vue-data-loading/raw/master/screenshot.gif) ## Install npm install vue-data-loading --save ## Usage Import first: import VueDataLoading from 'vue-data-loading' Register as a component: components: { VueDataLoading }, The only you need to do is wrapping your data with `vue-data-loading` tag. <vue-data-loading> <ul> <li v-for="(item, index) in list" :key="index">Item: {{item}}</li> </ul> </vue-data-loading> However, you can pass some `props` or `events` to the component. <vue-data-loading :loading="loading" :listens="['pull-down', 'infinite-scroll']" @infinite-scroll="infiniteScroll" @pull-down="pullDown"> <!--your data here--> </vue-data-loading> Sometimes, you may want to change the default style or text(html), that is easy, just edit the `slot`: Here is a example for `infinite-scroll-loading` slot: *default*: <slot :name="infinite-scroll-loading">加载中...</slot> *edit*: <div slot="infinite-scroll-loading" class="some-style-you-like"> <img src="/path/to/your-icon.png"> <span>loading...</span> </div> Here is a [full example](https://github.com/bedlate/vue-data-loading/blob/master/example/App.vue) ## API ### Props #### loading Type: boolean Default: false The component will not trigger any events while `loading` is `true`. It should be `true` when data are downloading, and `false` when finished. #### completed Type: boolean Default: false The component will not trigger `infinite-scroll` if `true`. It should be `true` when all data have be loaded. #### init-scroll Type: boolean Default: false The component will trigger `infinite-scroll` once if `true` when it has be mounted. It uses to bootstrap when page first-time loads. #### distance Type: number Default: 60 Unit: px Only available for `touch*` event, when pull distance is not less than it, `pull-down` or `pull-up` will be triggered. #### offset Type: number Default: 0 Unit: px Sometimes you want to change bottom offset to trigger `infinite-scroll` in advance. #### listens Type: array Default: ['infinite-scroll', 'pull-down', 'pull-up'] The component will not trigger the event if it not in the list. #### container Type: string Required: false All `events` bind on `window` if it is not set, or you need to specify a container `ref` to it. ### Events #### infinite-scroll Emit when container has already scrolled to bottom of window #### pull-down Emit when container has already pulled down #### pull-up Emit when container has already pulled up ### Slots #### infinite-scroll-loading Display when container has already scrolled to bottom of window and data is `loading` #### pull-down-before Display when distance of `pull-down` is less then `distance` prop #### pull-down-ready Display when distance of `pull-down` is not less then `distance` prop #### pull-down-loading Display when container has already `pull-down` and data is `loading` #### pull-up-before Display when distance of `pull-up` is less then `distance` prop #### pull-up-ready Display when distance of `pull-up` is not less then `distance` prop #### pull-up-loading Display when container has already `pull-up` and data is `loading` ## Develop ``` bash # install dependencies npm install # serve example with hot reload at localhost:8080 npm run dev # build vue-data-loading component npm run dist ```