zoukankan      html  css  js  c++  java
  • 小程序:下拉刷新,上拉加载

    wxml:

    <view class='view-container'>  
      <block wx:for='{{articles}}' wx:key='{{item.id}}'>  
        <view class='articles-container'>  
          <view class='info'>  
            <image class='avatar' src='{{item.avatar}}'></image>{{item.nickname}}  
            <text class='created-at'>{{item.created_at}}</text>  
            <text class='category'>{{item.category}}</text>  
          </view>  
        </view>  
      </block>  
      <view class='data-loading' hidden='{{hidden}}'>  
        数据加载中...  
      </view>  
    </view> 
    

    wxss:

    .view-container {  
      background-color: #fff;  
    }  
      
    .data-loading {  
      height: 100rpx;  
      line-height: 100rpx;  
      background-color: #eee;  
      text-align: center;  
      font-size: 14px;  
    }  
      
    .articles-container {  
      border-bottom: 1px solid #eee;  
      margin: 30rpx 10rpx;  
      background-color: #eee;  
    }  
      
    .articles-container .info {  
      font-size: 12px;  
      margin: 20rpx 0rpx;  
      height: 100%;  
      display: inline-block;  
    }  
      
    .articles-container .info .avatar {  
       60rpx;  
      height: 60rpx;  
      margin-right: 10rpx;  
      border-radius: 60rpx;  
      display: inline-block;  
      vertical-align: middle;  
    }  
      
    .articles-container .info .created-at {  
      margin: 0px 20rpx;  
      display: inline-block;  
      vertical-align: middle;  
    }  
      
    .articles-container .info .category {  
      color: #3399ea;  
      display: inline-block;  
      vertical-align: middle;  
    }  
    

    js:

    Page({
    
      data: {
        /** 
         * 需要访问的url 
         */
        urls: [
          'https://www.csdn.net/api/articles?type=more&category=home&shown_offset=0',
          'https://www.csdn.net/api/articles?type=new&category=arch',
          'https://www.csdn.net/api/articles?type=new&category=ai',
          'https://www.csdn.net/api/articles?type=new&category=newarticles'
        ],
        /** 
         * 当前访问的url索引 
         */
        currentUrlIndex: 0,
        /** 
         * 获取到的文章 
         */
        articles: [],
        /** 
         * 控制上拉到底部时是否出现 "数据加载中..." 
         */
        hidden: true,
        /** 
         * 数据是否正在加载中,避免数据多次加载 
         */
        loadingData: false
      },
    
      onLoad: function (options) {
        this.loadData(false);
      },
    
      /** 
       * 加载数据 
       */
      loadData: function (tail, callback) {
        var that = this,
          urlIndex = that.data.currentUrlIndex;
        wx.request({
          url: that.data.urls[urlIndex],
          success: function (r) {
            var oldArticles = that.data.articles,
              newArticles = tail ? oldArticles.concat(r.data.articles) : r.data.articles;
            that.setData({
              articles: newArticles,
              currentUrlIndex: (urlIndex + 1) >= that.data.urls.length ? 0 : urlIndex + 1
            });
            if (callback) {
              callback();
            }
          },
          error: function (r) {
            console.info('error', r);
          },
          complete: function () { }
        });
      },
    
      /** 
       * 监听用户下拉动作 
       */
      onPullDownRefresh: function () {
        console.info('onPullDownRefresh');
        var loadingData = this.data.loadingData,
          that = this;
        if (loadingData) {
          return;
        }
        // 显示导航条加载动画  
        wx.showNavigationBarLoading();
        // 显示 loading 提示框,在 ios 系统下,会导致顶部的加载的三个点看不见  
        // wx.showLoading({  
        //   title: '数据加载中...',  
        // });  
        setTimeout(function () {
          that.loadData(false, () => {
            that.setData({
              loadingData: false
            });
            wx.stopPullDownRefresh();
            // wx.hideLoading();  
            wx.hideNavigationBarLoading();
            console.info('下拉数据加载完成.');
          });
        }, 1000);
      },
    
      /** 
       * 页面上拉触底事件的处理函数 
       */
      onReachBottom: function () {
        console.info('onReachBottom');
        var hidden = this.data.hidden,
          loadingData = this.data.loadingData,
          that = this;
        if (hidden) {
          this.setData({
            hidden: false
          });
          console.info(this.data.hidden);
        }
        if (loadingData) {
          return;
        }
        this.setData({
          loadingData: true
        });
        // 加载数据,模拟耗时操作  
    
        wx.showLoading({
          title: '数据加载中...',
        });
    
        setTimeout(function () {
          that.loadData(true, () => {
            that.setData({
              hidden: true,
              loadingData: false
            });
            wx.hideLoading();
          });
          console.info('上拉数据加载完成.');
        }, 1000);
      }
    })  
    

      

  • 相关阅读:
    POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)
    POJ 3829 Seat taking up is tough(——只是题目很长的模拟)
    练习json读取中文
    关于调接口和腾讯云cos方面。
    JavaScript如何处理解析JSON数据详解
    js获取url参数值的两种方式
    修改Host,配置域名访问
    Atom设置震撼的编辑效果
    atom总结
    用node.js可以开启静态服务 不需要借助apache 或者xampl
  • 原文地址:https://www.cnblogs.com/jy13638593346/p/11686800.html
Copyright © 2011-2022 走看看