1.思路
在微信小程序中提供了下拉刷新的api(onPullDownRefresh()),那么實現下拉刷新的業務就是再下拉的時候,在原有的數據中追加新的數據
2.代碼實現
2.1 坑一
onPu" />

国产精品一区电影_国产男女无遮挡猛进猛出_日本丰满熟妇videossex8k_中文字幕无码乱人伦,久久综合伊人77777麻豆,亚洲最大在线观看,无码人妻久久一区二区三区app

武漢互贏網絡科技股份有限公司

為企業創品牌·從營銷型網站建設開始·互贏懂技術·更懂品牌營銷

24小時熱線

159 7210 9576027-89992189

您的位置:首頁 > 新聞資訊 > 行業百科 > 技術百科

微信小程序實現下拉刷新實現數據的追加

作者:龍 時間:2018-08-09 瀏覽:

1.思路

在微信小程序中提供了下拉刷新的api(onPullDownRefresh()),那么實現下拉刷新的業務就是再下拉的時候,在原有的數據中追加新的數據

2.代碼實現

2.1 坑一

onPullDownRefresh: function () {
    var _this =this;

    /**顯示loading */
    wx.showNavigationBarLoading();

    _this.newsrequest(_this.data.page);

    wx.stopPullDownRefresh();
    wx.hideNavigationBarLoading();   
    // console.log(_this.data.newslists)
  },
  
  
  /**請求數據 */
  newsrequest:function(page){
    var _this=this;
    // console.log(_this.data.page)
    requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
      var result = _this.newsdatadecorate(data.data.data.list);
      console.log(page)
      console.log(result)
     
      var arr=_this.data.newslists;
      if (result.length>0){
        /*此時會發現數據被添加到原有數據的后邊類似上拉加載更多*/
        _this.setData({
          newslists: _this.data.newslists.concat(result)
        });
        _this.data.page++;
      }
    })
  },

我們知道數組的concat方法時講參數數組拼接到原有數據后邊,所以與我們想要的追加在前面不想符合,想想該數組前面追加的方法時unshift()更改代碼:

2.2坑二

有人說concat方法時在數據后邊追加,那么只要再使用數組反轉reverse()將數組反轉,仔細想想,這種數據不是我們想要的下拉刷新的

    var arr1 = [1,2,3,4];//原來的數據
    var arr2 = [5,6,7,8];//后來的數據
    var arr3 = arr1.concat(arr2);//[1,2,3,4,5,6,7,8];
    var arr4 = arr3.reverse();//[8,7,6,5,4,3,2,1]
    //但是我們想要的應該是
    var arr5 =[5,6,7,8,1,2,3,4]
newsrequest:function(page){
    var _this=this;
    // console.log(_this.data.page)
    requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
      var result = _this.newsdatadecorate(data.data.data.list);
      console.log(page)
      console.log(result)
     
      var arr=_this.data.newslists;
      if (result.length>0){
        _this.setData({
          newslists: _this.data.newslists.concat(result).reverse()
        })
        _this.data.page++;
      }
    })
  },

2.2坑三

newsrequest:function(page){
    var _this=this;
    // console.log(_this.data.page)
    requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
      var result = _this.newsdatadecorate(data.data.data.list);
      console.log(page)
      console.log(result)
     
      var arr=_this.data.newslists;
      if (result.length>0){
        for(var t in result){
          _this.data.newslists.unshift(result[t])
        }
        _this.data.page++;
      }
    })
  },

但是頁面的數據不顯示,具體原因不詳,應該是this.data.方法設置數據,應該和頁面的生命周期有關,在數據設置時,頁面已渲染,(自己想想的,不知道對不對) image.png

這是我們就可以通過中介,將數據拼接好了之后,再通過this.setData()方法設置數據,這時就可以正常顯示

newsrequest:function(page){
    var _this=this;
    // console.log(_this.data.page)
    requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
      var result = _this.newsdatadecorate(data.data.data.list);
      
      var arr=_this.data.newslists;
      if (result.length>0){
       
        for(var v in result){
          arr.unshift(result[v])
        };
        _this.setData({
          newslists:arr
        });
        
        _this.data.page++;
      }
    })
  },

上述方案雖然成功了實現了數據追加,但是。。。且看下邊代碼

    var arr1 = [1,2,3,4];//原來的數據
    var arr2 = [5,6,7,8];//后來的數據
    var arr3 = arr2.concat(arr1);//[5,6,7,8,1,2,3,4];
    
    //但是我們想要的應該是
    var arr5 =[5,6,7,8,1,2,3,4]
    //此時兩個數據是不是一致的呢
    

newsrequest:function(page){
    var _this=this;
    // console.log(_this.data.page)
    requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
      var result = _this.newsdatadecorate(data.data.data.list);
      console.log(page)
      console.log(result)
     
      var arr=_this.data.newslists;
      if (result.length>0){
        _this.setData({
          newslists: result.concat(_this.data.newslists)
        });
        _this.data.page++;
      }
    })
  },
 

最新動態

常見問題百寶箱

全國服務熱線

027-89992189

掃一掃關注微信

Copyright 2013-2020 All Rights Reserved 武漢互贏網絡科技股份有限公司 鄂ICP備19027860號

獲取品牌營銷方案

快速填寫

馬上獲取

互聯網低成本創名牌從此開始!

主站蜘蛛池模板: 滦平县| 灵武市| 中卫市| 射洪县| 瑞安市| 南郑县| 偃师市| 台东市| 兴安县| 天津市| 东山县| 胶州市| 黄梅县| 广安市| 庆元县| 潮安县| 毕节市| 吕梁市| 甘洛县| 镇宁| 通辽市| 随州市| 太湖县| 东台市| 赤城县| 中江县| 临泽县| 昭平县| 会东县| 曲麻莱县| 潮州市| 柘城县| 防城港市| 榆树市| 隆昌县| 日照市| 平泉县| 池州市| 古丈县| 三门县| 黎平县|