前端Vue专辑

vue-infinite-loading的下拉加载更多等多个场景

2018-06-12  本文已影响8人  Benny_lzb

使用该插件的原因是LJ的Mint-ui 里边的下拉加载在Ios兼容上有点问题,只好重新找个现成的。在快接近想自己写个之际,找到了个好帮手。当然途中遇到点小问题,后面解决了。

主要是用了它的几个功能点

效果图


上拉加载.gif
 <!--视图层-->
  <infinite-loading spinner="bubbles" @infinite="infiniteHandler">
          <span slot="no-more">
               这里是内容
          </span>
  </infinite-loading>

 //加载更多
 infiniteHandler($state){
      if(this.selected == 'moments'){
    this._loadMoreDynamic($state,this.momentsList,this.$profileApi.Dynamic_GetRealTimeDynamicList,++this.Page.pageIndex)
      }else{
`` this._loadMoreDynamic($state,this.myMomentList,this.$profileApi.Dynamic_GetDynamicList,++this.Page.pageIndex1)
 },

 //加载更多动态
 _loadMoreDynamic($state,list,url,pageIndex){
      this.$http.post(url,
        {
          LookUserId:this.LookUserId,
          PageIndex:pageIndex,
          PageSize:this.Page.pageSize

        }).then((data)=>{
        if(data.Rstatus){
          list = list.concat(data.Rdata.List);
          if(this.selected == 'moments'){
            this.momentsList = Object.assign([], list);
          }else{
            this.myMomentList = Object.assign([], list);
          }
          //加载数据
          $state.loaded();
          //数据是否已经全部加载完(没有更多数据)
          if(pageIndex >= data.Rdata.PageCount) $state.complete()
        } else{
          $state.complete();
        }
      }).catch((err)=>{

      });
    },

主要实现还是在infiniteHandler($state)这个方法里,参数$state必须带,是该插件的核心。$state.complete()$state.loaded()主要是这两个方法,一个是结束、一个是继续加载。

<div class='text-fz22 loadmore-text' @click="loadMoreTrigger(item)" v-if="(Page.totalCount > Page.pageSize) && (item.DynamicCommentList.List.length != Page.totalCount)">{{lang.see_more}}</div>
<infinite-loading  spinner="bubbles" v-if="item.isLoad" @infinite="infiniteHandler($event,item)" ref="infiniteLoading">
</infinite-loading>
<!-- 是否加载完毕 -->
<span class='text-fz22 loadmore-text' v-if='item.isMore'>
 {{lang.noComment}}
</span>

js块


 //加载更多评论触发器
loadMoreTrigger(item){
     item.isLoad = true;
     this.$emit('loadMore');
},

 //加载更多评论
infiniteHandler($state,item){
        //获取实时动态
        this.$http.post(this.$profileApi.Dynamic_GetComment,
          {
            DynamicId:item.Id,
            PageIndex:++this.Page.pageIndex,
            PageSize:this.Page.pageSize

          }).then((data)=>{
          if(data.Rstatus){
            item.DynamicCommentList.List = item.DynamicCommentList.List.concat(data.Rdata.List)
            //加载数据
            $state.loaded();
            //数据是否已经全部加载完(没有更多数据)
            if(this.Page.pageIndex == data.Rdata.PageCount) {
                $state.complete()
                item.isLoad = false;
                item.isMore = true;
            }
          } else{
            $state.complete();
          }
        })
},

先到这里啦。路过得小伙伴给个赞哦~
有什么写的不对得地方可以帮忙指出哦。

上一篇 下一篇

猜你喜欢

热点阅读