关于vux-ui框架的scroller组件所踩的坑 - 破风晓月

时间:2024-03-09 14:46:02

关于vux-ui框架的scroller组件所踩的坑

这是我在做一个demo的一个上垃加载下拉刷新功能时所遇到的问题,由于伤了好一会脑筋,所以留下这篇笔记以供后续查询;

在上代码前建议在开发项目时不要优先选择vux这个框架,因为有一些常用的功能组件官方已不再更新,当然如果你的项目中没有那些功能的话,这个框架的确是一个不错的选择,或者说用别的框架代替vux官方放弃的功能,也是可以的,具体看个人吧!

先说说我遇到的问题吧:其实问题就一个,就是上拉加载的问题。

     1、一开始我是用该组件的@on-scroll-bottom触发方法实现数据加载,此方法由该组件的scroll-bottom-offset属性触发,官方文档上说明这个方法会触发多次,我想着用一个状态去禁止多吃触发,结果失败了,果断换了另一个方法,即@on-pullup-loading。

     2、@on-pullup-loading这个方法是可以实现的,不过有几个注意点需要格外注意,因为这个方法只触发一次,那么怎么让它可以多次执行呢。。。。  嘿嘿!!  上代码先

 

        

 

loadMore () {
    this.pageNum ++;
    this.getNewsList(false);
}, 
refresh () {
  this.pageNum = 1;
  this.getNewsList(true)

},

  

getNewsList (type) {
            this.showloading = true
            let param = {
                pageSize:10,
                pageNum:this.pageNum,
                type: parseInt(this.tabType)
            }
         api.getSearchList(param).then(res => {
                if(res.data.list.length == 0){
                    this.isScrollerShow = false;                        
                }
                this.isDataShow= true;
                //  type == undefined 表示为刷新或者是初始化   type = false 表示加载更多
                if( type == false){                    
                    for(let item of res.data.list){
                        this.list.push(item)
                    }    
                    // 判断是否还有数据 
                    if(res.data.list.length < param.pageSize){
                        // 没有就显示底线以及禁用上拉
                        this.isEnd = true;
              // 没有数据时这里要禁止调上拉组件,不然会一直显示在加载中 this.status.pullupStatus = \'disabled\' }else{ // 还有数据就开启上拉,并重置 这里一定要设置 pullupStatus为default 否则下拉组件会一直显示加载中 this.status.pullupStatus = \'default\'               } return; }else if( type == true ){
            this.$refs.scroller.enablePullup() // 启用上拉组件 ==》 这步极关键,否则下拉刷新后再上拉无效
            this.$nextTick( ()=> {
              this.$refs.scroller.donePulldown()
            })
          } // 以下为下拉刷新或初始化
                this.isLoadMoreShow = false;
                this.isScrollerShow = true;
                this.list = res.data.list; 
     this.isEnd = false;
            })
        },

  好吧!大致就记得这么多了,希望能帮主到人,如果有问题可以留言,但是不对的话请勿喷!!!