• 前端写分页(用了自己同事写的插件)


    记录一下

     首先需要在页面上引用分页的js

      1 //分页插件
      2 $(function () {
      3     var pagingObj = $(".js_paging");
      4     var pagingEmptyObj = $(".js_pagingEmpty");//页面配置的数据没有情况下的显示(默认)  使用页面配置 例如:pagingEmpty:'.js_pagingEmpty' by cp 2016 1 14
      5     if (!pagingObj) {
      6         return;
      7     }
      8 
      9     $(document).ready(function(){
     10         $.paging.search();
     11     });
     12 
     13     //默认分页的配置
     14     var pagingConfig = {
     15         pageIndex: 1,
     16         pageSize: 10,
     17         url: "",
     18         data: {},
     19         appendTo: "",
     20         beforeSuccess: undefined,
     21         success: ajaxSuccess,
     22         isLockLoding: false //是否锁定加载,true为锁定,无数据或正在请求时锁定
     23     };
     24 
     25     //配置等于当前页面配置合并默认配置
     26     var _curConfig = $(pagingObj).attr("data-options");
     27     if (_curConfig) {
     28         _curConfig = eval("({" + _curConfig + "})");
     29         pagingConfig = $.extend({}, pagingConfig, _curConfig);
     30     }
     31 
     32     //window滚动到底部时触发
     33     $("body").on('touchmove', function (e) {
     34         if (!pagingConfig.isLockLoding) {
     35             //判断底部有无  在计算触发下拉刷新的位置
     36             if ($("footer").length) {
     37                 var lastScreen = parseInt($(window).scrollTop()) + parseInt($(window).innerHeight()) - 50 < pagingObj.position().top * 1 ? false : true;
     38             } else {
     39                 var lastScreen = parseInt($(window).scrollTop()) + parseInt($(window).innerHeight()) +3 < pagingObj.position().top * 1 ? false : true;
     40             }
     41             
     42             if (lastScreen && pagingConfig.isLockLoding == false) {//到达需要加载的位置,且并未锁定加载
     43                 ajaxLoading();
     44             }
     45         }
     46     });
     47 
     48     //拓展分页函数
     49     $.extend({
     50         paging: {
     51             search: function () {
     52                 pagingConfig.pageIndex = 1;
     53                 pagingConfig.isLockLoding = false;
     54                 ajaxLoading();
     55             },
     56             updateDataAndSearch: function (searchData) {
     57                 pagingConfig.pageIndex = 1;
     58                 pagingConfig.isLockLoding = false;
     59                 pagingConfig.data = $.extend(pagingConfig.data,searchData);
     60                 ajaxLoading();
     61             }
     62         }
     63     });
     64 
     65     //请求分页数据,成功后调用success方法
     66     function ajaxLoading() {
     67         if (!pagingConfig.isLockLoding) {
     68             pagingConfig.isLockLoding = true;
     69             $.ajax({
     70                 type: "post",
     71                 url: pagingConfig.url,
     72                 data: $.extend(pagingConfig.data, { pageIndex: pagingConfig.pageIndex, pageSize: pagingConfig.pageSize }),
     73                 dataType: "json",
     74                 beforeSend: function () {
     75                     pagingObj.text("加载中...")
     76                 },
     77                 error: function () {
     78                     //showWrong("加载失败,请重试");
     79                     pagingConfig.isLockLoding = false;
     80                     pagingObj.text("");
     81                 },
     82                 isShowLoad:false,
     83                 success: pagingConfig.success
     84             });
     85         }
     86     }
     87 
     88     //默认的ajaxSuccess方法,成功后会解析分页模板生成HTML
     89     function ajaxSuccess(data) {
     90         pagingConfig.isLockLoding = false;
     91         if (pagingConfig.pageIndex == 1) {
     92             $(pagingConfig.appendTo).empty();
     93         }
     94 
     95         //如果定义了beforeSuccess函数,且return false则不执行解析html
     96         if (pagingConfig.beforeSuccess) {
     97             if (pagingConfig.beforeSuccess(data.Body) == false) {
     98                 return;
     99             }
    100         }
    101         if (data.DictJsonStatus == 200) {      
    102             datalist = data.Body.hasOwnProperty("DataList") ? data.Body.DataList : data.Body.List;
    103             var templateHtml;
    104             if (pagingConfig.template) {
    105                 templateHtml = $(pagingConfig.template).html();
    106             } else {
    107                 templateHtml = pagingObj.next().html();
    108             }
    109             var regex = /(${+[^}]*[}]+)/g;
    110             var result = templateHtml.match(regex);
    111 
    112             for (var j in datalist) {
    113                 var model = datalist[j];
    114                 var appendHtml = templateHtml.replace(regex, function (word) {
    115                     return eval(word.substring(2, word.length - 1));
    116                 });
    117                 var r = $(pagingConfig.appendTo).append(appendHtml);
    118             }
    119             pagingConfig.pageIndex++;
    120             if (data.Body.Total == 0) {//判断没有数据存在时的显示   by cp 2016 1 14
    121                 pagingObj.hide();
    122                 if (pagingConfig.pagingEmpty) {//pagingConfig.pagingEmpty 页面配置的数据没有情况下的显示  例如:".js_pagingEmpty"
    123                     $(pagingConfig.pagingEmpty).show();
    124                 } else {
    125                     pagingEmptyObj.show();
    126                 }
    127             }
    128             //如果得到的数据比每页数据量小,说明已经没有数据了
    129             else if (datalist.length < pagingConfig.pageSize) {
    130                 pagingObj.text("没有更多数据");
    131                 pagingConfig.isLockLoding = true;
    132             } 
    133             else {
    134                 pagingObj.text("请下拉加载数据");
    135             }
    136         } else {
    137             //showWrong(rq.Msg);
    138             pagingObj.text("");
    139         }
    140     }
    141 
    142 });
    143 //搜索后得到的数据 显示提示信息 与条数
    144 function showTipsTotal(data) {
    145     var total = data.Total;
    146     $(".js_num").html(total)
    147 }
    分页插件的js代码

    模板:

     <div class="js_list">
                        
      </div>
       <!-- 分页控制 -->
       <!-- js_paging 分页插件里的元素  data-options 打开的url   appendTo 放到哪个地方去   -->
       <div class="commloadList js_paging" data-options="url:'/OACustomer/SearchCustomer',appendTo:'.js_list',data:searchData"></div>
        <!--这个隐藏的div就放下面-->
        <div style="display: none">   
        <!--模板   需要显示的重复的分页内容--> 
          <div class="item-list  poabo js_openPage" data-url="/OACustomer/CustomerDetail?Id=${model.Id}">
              ${formateOperate(model)}  <!-- ${model.Id} 后台给的绑定数据源 也可以直接放${自定义的一个方法(model)} -->
              <img class="open" src="../../images/v1/open.png" alt="" />
          </div>
        </div>
    

      

        

      

      

     
  • 相关阅读:
    前端/html5效果收藏
    Fiddler 网页采集抓包利器
    Es6 类class的关键 super、static、constructor、new.target
    js 倒计时毫秒级别显示
    雅虎34条军规
    javascript 异步请求封装成同步请求
    微信小程序 base64图片在canvas上画图
    chrome inspect 远程调试H5
    webpack 打包调试
    微信小程序云函数 添加数据到数据库
  • 原文地址:https://www.cnblogs.com/yinhuaboke/p/6757359.html
Copyright © 2020-2023  润新知