美文网首页
vue-scroller下拉刷新上拉加载

vue-scroller下拉刷新上拉加载

作者: Gaochengxin | 来源:发表于2017-08-03 10:04 被阅读640次

    Step 1: create vue project and install vue-scroller via npm. (we use vue webpack-simple template here)

    $ vue init webpack-simple#1.0 my-project
    $ cd my-project
    $ npm install
    $ npm install vue-scroller
    Step 2: add resolve option and loader in webpack.config.js as below.

        module.exports = {
        // ...
    
       resolve: {
       extensions: ['', '.js', '.vue'],
        fallback: [path.join(__dirname, './node_modules')]
         },
    
        // ...
    
         module: {
           loaders: [
             // ...
    
             {
               test: /vue-scroller.src.*?js$/,
               loader: 'babel'
             }
           ]
         },
    
                // ...
    
       }
       Step 3: copy codes below to overwrite App.vue
    
       <template>
         <scroller delegate-id="myScroller"
                   :on-refresh="refresh"
                          :on-infinite="loadMore"
                   v-ref:my_scroller>
                  <div v-for="(index, item) in items" @click="onItemClick(index,        item)"
                class="row" :class="{'grey-bg': index % 2 == 0}">
             {{ item }}
           </div>
         </scroller>
       </template>
    
       <script>
         import Scroller from 'vue-scroller'
    
         export default {
           components: {
             Scroller
           },
    
           data () {
             return {
               items: []
             }
           },
    
           ready() {
    
             for (let i = 1; i <= 20; i++) {
               this.items.push(i + ' - keep walking, be 2 with you.')
             }
             this.top = 1
             this.bottom = 20
    
             setTimeout(() => {
               /* 下面2种方式都可以调用 resize 方法 */
               // 1. use scroller accessor
               $scroller.get('myScroller').resize()
    
               // 2. use component ref
               // this.$refs.my_scroller.resize()
             })
           },
    
           methods: {
             refresh() {
               setTimeout(() => {
                 let start = this.top - 1
    
                 for (let i = start; i > start - 10; i--) {
                   this.items.splice(0, 0, i + ' - keep walking, be 2 with you.')
                 }
       
                 this.top = this.top - 10;
    
                 /* 下面3种方式都可以调用 finishPullToRefresh 方法 */
    
                 // this.$broadcast('$finishPullToRefresh')
                 $scroller.get('myScroller').finishPullToRefresh()
                 // this.$refs.my_scroller.finishPullToRefresh()
    
               }, 1500)
             },
    
             loadMore() {
               setTimeout(() => {
    
                 let start = this.bottom + 1
    
                 for (let i = start; i < start + 10; i++) {
                   this.items.push(i + ' - keep walking, be 2 with you.')
                 }
    
                 this.bottom = this.bottom + 10;
    
                 setTimeout(() => {
                   $scroller.get('myScroller').resize()
                 })
               }, 1500)
             },
    
             onItemClick(index, item) {
               console.log(index)
             }
           }
    
         }
       </script>
    
       <style>
         html, body {
           margin: 0;
         }
    
         * {
           box-sizing: border-box;
         }
    
         .row {
           width: 100%;
           height: 50px;
           padding: 10px 0;
           font-size: 16px;
           line-height: 30px;
           text-align: center;
           color: #444;
           background-color: #fff;
         }
    
         .grey-bg {
          background-color: #eee;
         }
       </style>

    相关文章

      网友评论

          本文标题:vue-scroller下拉刷新上拉加载

          本文链接:https://www.haomeiwen.com/subject/dniulxtx.html