首页 > 代码库 > vue 滚动加载

vue 滚动加载

 

<template>  <div class="wraper" @scroll="onScroll($event)">    <div class="item" v-for="item in items">      {{item}}    </div>  </div></template><script>export default {  data () {    return {      items:[],      pgSize:36,      rawItems:[],      pgNo:1    }  },   ready () {    for(var i=0;i<=1000;i++){      this.rawItems.push(i)    }    this.changePgItems()  },  methods:{    onScroll(event){      var offsetHeight = event.currentTarget.offsetHeight,      scrollHeight = event.target.scrollHeight,      scrollTop = event.target.scrollTop,      scrollBottom = offsetHeight + scrollTop      if(scrollTop===0)      {        if(this.pgNo===1)        {          return        }        this.pgNo--        this.changePgItems()        event.target.scrollTop=offsetHeight-1      }      if(scrollBottom===scrollHeight || scrollBottom===scrollHeight+2)      {        if(this.pgNo==Math.ceil(this.rawItems.length/this.pgSize))        {          return        }        this.pgNo++        this.changePgItems()        event.target.scrollTop=1      }    },    changePgItems(){      var start = (this.pgNo-1) * this.pgSize,      items = this.rawItems.slice(start,this.pgSize+((this.pgNo-1)*this.pgSize))      this.items = items    }  }}</script><style lang="less">.wraper{  border:1px solid red;  height:100vh;  overflow-y: auto;  box-sizing: border-box;  .item{    height: 30px;    border-bottom: 1px solid #ccc;  }}</style>

  

 

vue 滚动加载