下拉加载

原理: 在下拉过程中,通过监听滚动条距离底部的高度,来触发加载新的数据。 这里有一个APICloud自带的滚动属性 scrolltobottom 来帮助我们完成这个功能。

  • 监听滚动到frame底部的事件

    api.addEventListener({
      name: 'scrolltobottom',
      extra: { // 距离底部还有多少触发scrolltobottom事件
          threshold: 0
      }
    }, function(ret, err) {
      // 获取更多的数据
      if (curCount < pageSize) {
          var pushStatus = $api.byId('pushStatus');
          pushStatus.innerHTML = "没有啦!";
      }else{
          getClassifyList();
      }
    });
    
  • 加载数据

var pageNum = 0;
function getClassifyList(){
    pageNum ++;

    api.showProgress({
       style: 'default', animationType: 'fade', title: '努力加载中...', text: '', modal: false
    });

    // var params = params || {}
    var data = {
        "version": "1.0",
        "pageSize": params.pageSize || pageSize,
        "pageNum": pageNum,
        "data": params.data || {
        "demandType": '',
        "demandCategory": '',
        "auditStatus":  '',
        "sort":  10
    }

    api.ajax({
        url: 'http://172.16.50.57:8080/api/wxdemand/getClassifyList',
        method: 'post',
        data: { body: data },
        dataType: 'json',
        timeout: 100,
        returnAll: true,
        headers:{ 'Content-Type': 'application/json;charset=utf-8' }
    }, function(ret, err) {
        if (ret) {
            if (ret.statusCode == '200') {
              var result = ret.body.data;
              curCount = result.classifyList.length;
              updataList(result);              
            }else{
              alert('糟糕,错误状态码:'+ret.statusCode)
            }
        } else {
            alert('出错啦:'+err.statusCode);
        }
        api.hideProgress();
    });     
}
  • 更新

    function updataList(data){
      var matchList = $api.byId('matchList')
      var tpl = template(data);
      $api.append(matchList, tpl);
    }
    
  • 生成模板

    function template(data){
      var template = '';
      var list = data.classifyList;
      if (list.length >0) {
        for (var i = 0; i < list.length; i++) {
          var cate = '';
          switch(list[i].demand_category){
            case 0:
              cate = '精准营销'
              break;
            case 1:
              cate = '数据报告'
              break;
            case 2:
              cate = '数据交易'
              break;
            case 3:
              cate = 'API'
              break;
            case 4:
              cate = '其他定制'
              break;
          }
          var typeName = '' ,typeClass = '';
          switch(list[i].demand_type){
            case 0:
              typeName = '需'
              typeClass = 'receive'
              break;
            case 1:
              typeName = '接'
              typeClass = 'need'
              break;
          }
          template += '<div class="commonItems" onclick="openReleaseDetailsWin('+ list[i].id +')">';
          template += '<div class="title">'+ list[i].id +'</div>';
          template += '<div class="type type-'+ typeClass +'">'+ typeName +'</div>';
          template += '<div class="bd"><span class="cate">'+cate+'</span><span class="price">¥<b>'+ list[i].current_price +'</b></span><span class="sale">原价¥'+ list[i].original_cost +'</span></div>'
          template += '<div class="meta"><span><i class="icon-view"></i>' + list[i].browse_count +'</span><span><i class="icon-like"></i>' +list[i].fav_count+ '</span><span>2017-09-04 19:22:57</span></div>';
          template += '</div>';
        }
      }
      return template;
    }
    

results matching ""

    No results matching ""