热门关键字:
jquery > jquery教程 > html5 > pc端vue 滚动到底部翻页

pc端vue 滚动到底部翻页

271
作者:管理员
发布时间:2020/3/17 10:58:40
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=1049

  html:

  <divclass="list"ref="scrollTopList">

  <divclass="listsmall"v-for="(item,index)oflist":key="index"@click="getDeviceInfo(item.id)">

  <spanclass="state":class="{'state1':item.status==1,'state0':item.status==0,'state2':item.status==2,'state3':item.status==3}"></span>

  <spanclass="texttextcolor">【{{item.code||item.name}}】</span>

  <spanclass="text">{{item.name}}</span>

  </div>

  </div>

  js:

  先写滚动事件

  handleScroll(){

  letscrollTop=this.$refs.scrollTopList.scrollTop,

  clientHeight=this.$refs.scrollTopList.clientHeight,

  scrollHeight=this.$refs.scrollTopList.scrollHeight,

  height=50;//根据项目实际定义

  if(scrollTop+clientHeight>=scrollHeight-height){

  if(this.pageSize>this.total){

  returnfalse

  }else{

  this.pageSize=this.pageSize+10//显示条数新增

  this.getpageList()//请求列表list接口方法

  }

  }else{

  returnfalse

  }

  },

  method中写节流函数

  throttle(func,wait){

  letlastTime=null

  lettimeout

  return()=>{

  letcontext=this;

  letnow=newDate();

  letarg=arguments;

  if(now-lastTime-wait>0){

  if(timeout){

  clearTimeout(timeout)

  timeout=null

  }

  func.apply(context,arg)

  lastTime=now

  }elseif(!timeout){

  timeout=setTimeout(()=>{

  func.apply(context,arg)

  },wait)

  }

  }

  },

  mounted中调用

  mounted(){

  this.$refs.scrollTopList.addEventListener("scroll",this.throttle(this.handleScroll,500),true)

  },

  //-------------------------------------------------------------------------------------------第二种写法

  html:

  添加滚动事件

  <divclass="tablelist-box"@scroll="scrollEvent($event)">

  <div

  class="tablelist"

  :class="{'active':listDevicesDetailIndex==index}"

  v-for="(item,index)ofdeviceList"

  :key="index"

  v-if="deviceList.length!==0"

  @click="deviceDetail(item,index)"

  >

  <spanclass="tablelist-status">

  <i

  :class="{zx:item.status==1,lx:item.status==2,wjh:item.status==0,gj:item.status==3}"

  ></i>

  </span>

  <spanclass="tablelist-bg">{{item.code!=null?item.code:"/"}}</span>

  </div>

  <divclass="list-more"v-show="!deviceListIsFinish">{{deviceTip}}</div>

  <divclass="list-more"v-show="deviceListIsFinish">{{deviceTip}}</div>

  </div>

  css:

  tablelist-box{

  height://根据实际项目取

  overflow:auto//必须不然判断有问题

  }

  css定义

  js

  写入滚动事件

  scrollEvent(e){

  if(einstanceofEvent){

  letel=e.target;

  letscrollTop=el.scrollTop;

  //获取可视区的高度

  letclientHeight=el.clientHeight;

  //获取滚动条的总高度

  letscrollHeight=el.scrollHeight;

  letheight=50;

  //到底了

  //console.log(this.deviceListIsLoad,this.deviceListIsFinish);

  //console.log(scrollTop,clientHeight,scrollHeight);

  //是否继续加载且已完成加载

  if(

  scrollTop+clientHeight>=scrollHeight&&

  this.deviceListIsLoad&&

  !this.deviceListIsFinish

  ){

  //把距离顶部的距离加上可视区域的高度等于或者大于滚动条的总高度就是到达底部

  this.deviceListIsLoad=true;

  console.log("到底了");

  setTimeout(()=>{

  this._deviceListPage();

  },1000);

  }

  }

  请求列表的处理

  _deviceListPage(){

  letparams={

  pageSize:this.devicePageSize,

  pageNum:this.devicePageNum,

  kw:"",//查询条件(通配查询条件)

  type:this.deviceType,//设备类型(下拉)2.1.6接口获取

  code:this.deviceCode,//设备编号

  areaId:this.deviceareaId,//位置区域

  status:this.deviceStatus,//状态1:在线(正常),0:未激活,2已离线,3.告警

  imei:""//imei编号

  };

  deviceListPage(params).then(res=>{

  if(res.code==200){

  this.devicePageTotal=res.body.total;

  this.devicePageSize=res.body.pageSize;

  this.devicePageNum=res.body.pageNum;

  this.devicePageTotalPages=parseInt(

  (this.devicePageTotal+this.devicePageSize-1)/

  this.devicePageSize

  );

  if(this.devicePageTotal==0){

  //console.log("没有数据");

  //没有数据

  this.deviceListnodata=true;

  this.deviceListIsLoad=false;

  this.deviceListIsFinish=true;

  this.devicePageNum=1;

  this.deviceTip="暂无数据";

  returnfalse;

  }

  this.deviceList=this.deviceList.concat(res.body.datas);

  //console.log(this.devicePageNum,this.devicePageTotalPages);

  if(this.devicePageNum==this.devicePageTotalPages){

  //没有更多

  this.deviceListIsLoad=false;

  this.deviceListIsFinish=true;

  this.devicePageNum=1;

  this.deviceTip="没有更多了~";

  //console.log("没有更多了");

  }else{

  //console.log("下一页");

  //下一页

  this.deviceListIsLoad=true;

  this.deviceListIsFinish=false;

  this.devicePageNum++;

  this.deviceTip="正在加载中~";

  }

  //console.log("deviceList",this.deviceList);

  }else{

  //this.deviceList=[];

  this.deviceListIsLoad=false;

  this.deviceListIsFinish=true;

  this.devicePageNum=1;

  this.deviceTip="数据加载失败~";

  }

  });

  },

  return中的定义

  devicePageSize:10,//每页显示

  devicePageNum:1,//当前页

  devicePageTotal:0,//总条数

  devicePageTotalPages:0,//总页数

  deviceListIsFinish:false,//是否加载完成

  deviceListIsLoad:false,//是否加载更多

  deviceListnodata:false,//是否有数据

  deviceTip:"",





如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:html
友荐云推荐