• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    前后端结合实现amazeUI分页效果

    前后端结合实现amazeUI分页,代码如下所示;

    借鉴

    本文在博客https://blog.csdn.net/brave_coder/article/details/52367124的基础上实现的,非常感谢大佬的分享。

    前端实现

    1、引入paginator.js

    (function ($) {
        $.fn.paginator = function (options) {
            //this指向当前的选择器
            var config = {
                url: "",
                pageParent: "",
                totalBars: -1,
                limit: -1,
                offset: 1,
                callback: null
            }
            //合并参数
            var opts = $.extend(config, options);
     
            opts.totalBars = Math.ceil(opts.totalBars / opts.limit);
            //计算按钮的总个数
     
            //获取offset参数
            var queryString = function (url) {
                var offset = (url.split("?")[1]).split("=")[1];
                return parseInt(offset);
            }
     
            //ajax核心方法,用于分页的数据操作
            var ajaxCore = function (offset, fn) {
                $.ajax({
                    "url": opts.url,
                    "data": {
                        "offset": offset,
                        "limit": opts.limit
                    },
                    "dataType": "JSON",
                    "method": "POST",
                    "success": fn
                });
            }
     
            //重新装配分页按钮
            var pageCore = function (offset) {
                if (opts.offset == offset) {
                    return;
                } //如果是当前页面,那么就什么事都不用干了!
                else {
                    ajaxCore(offset, opts.callback);
                    $(opts.pageParent).empty();
                    //否则,清空所有的节点,重新向DOM插入新的分页按钮
                    var output = "";
                    var nextBar = offset == opts.totalBars ? "<li class=\&;am-disabled\&;><a yxhref=\&;javascript:;\&;>»</a></li>" : "<li><a yxhref=\&;" + opts.url + (offset + 1) + "\&;>»</a></li>";
                    var preBar = offset == 1 ? "<li class=\&;am-disabled\&;><a yxhref=\&;javascript:;\&;>«</a></li>" : "<li><a yxhref=\&;" + opts.url + (offset - 1) + "\&;>«</a></li>";
                    //组装向上一个节点和下一页节点
                    if (opts.totalBars > 7) {
                        if (offset < 5) {
                            output += preBar;
                            for (var i = 1; i <= 5; i++) {
                                if (i == offset) {
                                    output += "<li class=\&;am-active\&;><a yxhref=\&;" + opts.url + offset + "\&;>" + offset + "</a></li>";
                                } else {
                                    output += "<li><a yxhref=\&;" + opts.url + i + "\&;>" + i + "</a></li>";
                                }
                            }
                            output += "<li><span>...</span></li>";
                            output += "<li><a yxhref=\&;" + opts.url + (opts.totalBars) + "\&;>" + (opts.totalBars) + "</a></li>" + nextBar;
                        } else if (offset >= 5 && offset <= opts.totalBars - 4) {
                            //当页面大于7个的时候,那么在第五个和倒数第五个时,执行
                            output += preBar;
                            output += "<li><a yxhref=\&;" + opts.url + 1 + "\&;>" + 1 + "</a></li>";
                            //第一个
                            output += "<li><span>...</span></li>"; //省略号
     
                            output += "<li><a yxhref=\&;" + opts.url + (offset - 1) + "\&;>" + (offset - 1) + "</a></li>";
     
                            output += "<li class=\&;am-active\&;><a  yxhref=\&;" + opts.url + offset + "\&;>" + offset + "</a></li>";
     
                            output += "<li><a yxhref=\&;" + opts.url + (offset + 1) + "\&;>" + (offset + 1) + "</a></li>";
     
                            output += "<li><span>...</span></li>"; //省略号;
     
                            output += "<li><a yxhref=\&;" + opts.url + (opts.totalBars) + "\&;>" + (opts.totalBars) + "</a></li>"; //尾页
     
                            output += nextBar;
     
                        } else if (offset > opts.totalBars - 4 && offset <= opts.totalBars) {
                            //当页面位于倒数第四个时候
                            output += preBar;
                            output += "<li><a yxhref=\&;" + opts.url + 1 + "\&;>" + 1 + "</a></li>" + "<li><span>...</span></li>";
     
                            for (var j = 4; j >= 0; j--) {
                                if (opts.totalBars - j == offset) {
                                    output += "<li class=\&;am-active\&;><a yxhref=\&;" + opts.url + (opts.totalBars - j) + "\&;>" + (opts.totalBars - j) + "</a></li>";
                                } else {
                                    output += "<li><a yxhref=\&;" + opts.url + (opts.totalBars - j) + "\&;>" + (opts.totalBars - j) + "</a></li>";
                                }
                            }
                            output += nextBar;
                        } else {
                            console.log("分页数据出错!");
                            return;
                        }
                    } else {
                        output += preBar;
                        for (var i = 1; i <= opts.totalBars; i++) {
                            if (i == offset) {
                                output += "<li class=\&;am-active\&;><a yxhref=\&;" + opts.url + offset + "\&;>" + offset+ "</a></li>";
                            } else {
                                output += "<li><a yxhref=\&;" + opts.url + i + "\&;>" + i+ "</a></li>";
                            }
                        }
                        output += nextBar;
                    }
                    $(opts.pageParent).append(output);
                    opts.offset = offset; //将偏移量赋值给config里面的offset
                }
            }
     
            //清理函数,防止多绑定事件和重新计算分页
            var clear = function () {
                $(opts.pageParent).empty().undelegate();
            }
     
     
            //初始化装配分页按钮
            var init = function (fn) {
                if (typeof (fn) != "function") {
                    console.log("将不能正确的执行回调函数");
                } else {
                    opts.callback = fn;
                }
                clear();
                ajaxCore(1, opts.callback);//执行初始化ajax方法
                var preBar = "<li class=\&;am-disabled\&;><a yxhref=\&;javascript:;\&;>«</a></li>";
                //上一页,(禁用的效果)
                //如果只有一页,那么禁用下一页
                var nextBar = opts.totalBars > 1 ? "<li><a yxhref=\&;" + opts.url + 2 + "\&;>»</a></li>" : "<li class=\&;am-disabled\&;><a yxhref=\&;javascript:;\&;>»</a></li>";
                //最后一页
                var output = "<li class=\&;am-active\&;><a yxhref=\&;" + opts.url + 1 + "\&;>1</a></li>";
     
                if (opts.totalBars <= 7) {
                    for (var i = 1; i < opts.totalBars; i++) {
                        output += "<li><a yxhref=\&;" + opts.url + (i + 1) + "\&;>" + (i + 1) + "</a></li>";
                    }
                } else {
                    for (var j = 1; j < 5; j++) {
                        output += "<li><a yxhref=\&;" + opts.url + (j + 1) + "\&;>" + (j + 1) + "</a></li>";
                    }
                    output += "<li><span>...</span></li>";
                    output += "<li><a yxhref=\&;" + opts.url + (opts.totalBars) + "\&;>" + (opts.totalBars) + "</a></li>";
                }
                $(opts.pageParent).delegate("a","click", function () {
                    var offset = queryString($(this).attr("yxhref"));
                    console.log("ok");
                    pageCore(offset);
                });
                $(opts.pageParent).append(preBar + output + nextBar);
            };
            init(opts.callback);//初始化分页引擎
        }
    }(window.jQuery))

    2、获取总页数,再获取分页

    $.ajax({
            type: "GET",
            url: selectSendNumberNumsByContURL,//获取总数
            data: {},
            dataType: "json",
            success: function(data){
    
                if (data[0].code == 200) {
    
                    $("#paginator").paginator({
                        url: selectSendNumberByContURL + "?offsets=",
                        pageParent: "#paginator",
                        totalBars: data[0].allNums,
                        limit: 10,
                        offset: 1,
                        callback: function (data1) {
    
                            //清空DOM节点
                            
                            //动态加dom节点
                        }
                    });
                }else{
    
                }
            },
            error: function (err) {
    
            }
        });

    后端实现(分页)

    这里是controller,拿到offset(第几页)参数、limit(每页多少数量),再写SQL实现分页就好了。

    @RequestMapping(value = "/selectNumberCheckByCont", method = RequestMethod.POST)
        @ResponseBody
        public List<ReturnUtils> selectNumberCheckByCont(HttpServletRequest request,
                                                         HttpServletResponse response) throws Exception {
    
            //统一设置返回数据格式
            response.setContentType("application/json");
            response.setHeader("Pragma", "no-cache");
            response.setCharacterEncoding("UTF-8");
    
            String offset = request.getParameter("offset");
            String limit = request.getParameter("limit");
    
            List<ReturnUtils> list = iNumberCheckService.selectNumberCheckByCont(offset, limit);
    
            return list;
        }

    总结

    到此这篇关于前后端结合实现amazeUI分页的文章就介绍到这了,更多相关amazeUI分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

    上一篇:AmazeUI 加载进度条的实现示例
    下一篇:前端H5 Video常见使用场景简介
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    前后端结合实现amazeUI分页效果 前,后端,结合,实现,amazeUI,