Vue.js如何实现真分页

  本文主要为大家分享一篇Vue.js如何实现真分页的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

思路:

      前端在初始化过程中,第一步先请求总的条数,然后,再请求第一页数据,然后根据点击翻页事件根据请求页码用ajax(axios和qs)去后台取得数据。

过程:

    页码配置项:

pagerData:{
                   data:[],
                   page:{
                   //分页数
                       arrPageSize:[10,20,30,40],
                       //分页大小
                       pageSize:10,
                       //总分页数
                       pageCount:1,
                       //当前页面
                       pageCurrent:1,
                       //总数
                       totalCount:80
                   }
               },

登录后复制

服务Impl:

@Override
public List getPageList(int startpage, int endpage) throws IOException {
// TODO Auto-generated method stub
init();
List
list = aMapper.selectByPage(startpage,endpage,null);
return list;
}

@Override
public Integer getCount() throws IOException {
// TODO Auto-generated method stub
init();
Integer count = (int) aMapper.countByExample(null);
return count;
}

登录后复制

    1请求总数

vue.js(JavaScript)代码:
created(){
//请求总页数
this.$axios.post("http://localhost:8088/Web/ListServlet",
{params:{
init:true
}}
,
{
headers:{'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'}
}
)
.then(res=>{
console.log(JSON.stringify(res.data));
var object = eval(res.data);
var totalNum = object["count"];
console.log("totalNum:" + totalNum);
this.pagerData.page.totalCount = totalNum;
});}

登录后复制

后台代码(Java):
String queryString = readRequest(request);

JSONObject object = null;
object = JSONObject.fromObject(queryString);
JSONObject params = (JSONObject) object.get("params");
//判断是是初始化过程
if((params.getString("init")).equals("true")) {
Integer count = service.getCount();
PrintWriter out = response.getWriter();
JSONObject result = new JSONObject();
result.put("count", count);
logger.info(result.toString());
out.write(result.toString());
out.close();
return;
}
logger.info(params.get("startpage"));
logger.info(params.get("endpage"));
//判断不是初始化过程
if((params.getString("init")).equals("false")) {
PrintWriter out = response.getWriter();
List list = service.getPageList(Integer.parseInt((params.getString("startpage"))),
Integer.parseInt((params.getString("endpage"))));
JSONArray array = JSONArray.fromObject(list);
out.write(array.toString());
out.close();
return;
}
public String readRequest(HttpServletRequest request) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
String temp = "";
String s = "";
while((temp = reader.readLine()) != null)
{
s = s + temp;
}
return s;
}

登录后复制

        2请求首页和后续页码

vue.js(JavaScript)代码:
//请求首页 1-10
this.$axios.post("http://localhost:8088/Web/ListServlet",

{params:{
init:false,
startpage:1,
endpage:10
}}
,
{
headers:{'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'}
}
)
.then(res=>{
console.log(JSON.stringify(res.data));
var object = eval(res.data);
var totalNum = object["count"];
console.log("totalNum:" + totalNum);
for(var i = 0; i //console.log("res.data[i] is " + i + " " + JSON.stringify(res.data[i]));
var object = eval(res.data[i]);
object.index = i+1;
totalNum ++;
if(ithis.pagerData.data.push(object);
}
}
//this.pagerData.page.totalCount = totalNum;
});
this.loading = false;


}

登录后复制

翻页(change):
this.$axios.post('http://localhost:8088/Web/ListServlet',
           {params:{
           init:false,
startpage:((curpage-1)*this.pagerData.page.pageSize +1),
endpage:curpage*this.pagerData.page.pageSize
           }},
           {
           headers:{'Content-Type':'application/x-www-form-urlencoded;charset=utf-8'}
           }
           ).then(res=>{
console.log(JSON.stringify(res.data));
var object = eval(res.data);
for(var i = 0; i //console.log("res.data[i] is " + i + " " + JSON.stringify(res.data[i]));
var object = eval(res.data[i]);
object.index = (curpage-1)*this.pagerData.page.pageSize +1 + i;
if(ithis.pagerData.data.push(object);
}
}
//this.pagerData.page.totalCount = totalNum;
})

登录后复制

后台代码(Java):
//判断不是初始化过程
if((params.getString("init")).equals("false")) {
PrintWriter out = response.getWriter();
List list = service.getPageList(Integer.parseInt((params.getString("startpage"))),
Integer.parseInt((params.getString("endpage"))));
JSONArray array = JSONArray.fromObject(list);
//logger.info(array.get(1).toString());
out.write(array.toString());
out.close();
return;
}

登录后复制

额外:

                            可添加配置:pagesize,从前台传入后台,修改分页大小

                            example,条件查询,可在params里配置,用mybatis example配置查询

总结:

        这是一个比较原生的真分页方法,如果想要实现更加复杂的分页,需要使用相关分页插件。

以上就是Vue.js如何实现真分页的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2778215.html

(0)
上一篇 2025年3月8日 15:23:51
下一篇 2025年3月6日 01:56:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Vue.js之CLI框架安装步骤

    本文主要为大家分享一篇Vue.js之CLI框架安装步骤的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。 一、 检查node是否安装   1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v …

    2025年3月8日 编程技术
    200
  • 基于vue.js和webpack的Chat示例

    本篇文章给大家分享了关于基于vue.js和webpack的chat示例 ,有感兴趣的小伙伴可以看一下这里的内容 todomvc看腻了,周末花时间做了一个基于Vue + Webpack构建的简单chat示例,聊天记录保存在localStorg…

    2025年3月8日
    200
  • Vue.js—条件渲染

    本篇文章给大家分享了关于vue.js—条件渲染 ,有需要的朋友可以看一下本篇文章的内容 v-if 在字符串模板中,比如 Handlebars,我们得像这样写一个条件块: {{#if ok}}    Yes{{/if}} 登录后复制登录后复制…

    编程技术 2025年3月8日
    200
  • Vue.js条件渲染详解

    本文主要和大家分享vue.js条件渲染详解,在字符串模板中,比如 handlebars,我们得像这样写一个条件块: {{#if ok}}    Yes{{/if}} 登录后复制 在 Vue 中,我们使用 v-if 指令实现同样的功能: Ye…

    编程技术 2025年3月8日
    200
  • 简单理解Vue条件渲染_vue.js

    这篇文章主要帮助大家简单理解vue条件渲染,什么是vue条件渲染,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 一、v-if显示单个元素 注意else只能跟在v-if或者v-show后面 nbsp;html>   Vue条件渲染 …

    编程技术 2025年3月8日
    200
  • 详解在Vue组件中的data为什么只能返回函数

     通过Vue构造器传入的各种选项大多数都可以在组件里用,唯独只有data选项有区别,在Vue构造器中data返回的是对象,但是在组建中必须返回一个函数。why?这篇文章主要介绍了详解在Vue组件中的data为什么只能返回函数,小编觉得挺不错…

    编程技术 2025年3月8日
    200
  • vue.js如何实现组件的双向绑定

    这篇文章主要介绍了vue.js如何实现组件的双向绑定,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 概述:组件通信通过props,props默认单向绑定(父->子),除了发布订阅事件,另一个通信的方法双向…

    2025年3月8日
    200
  • vue.js实现操作class的方法

    这次给大家带来vue.js实现操作class的方法,vue.js操作class的注意事项有哪些,下面就是实战案例,一起来看一下。 最近使用vue需要实现一个点餐选择商品规格的页面,需要通过vue动态的给被点击的元素添加class名字,使其变…

    2025年3月8日
    200
  • Vue.js的基础知识点总结

    这次给大家带来Vue.js的基础知识点总结,使用Vue.js基础知识的注意事项有哪些,下面就是实战案例,一起来看一下。 对大部分人来说,掌握Vue.js基本的几个API后就已经能够正常地开发前端网站。但如果你想更加高效地使用Vue来开发,成…

    编程技术 2025年3月8日
    200
  • vuejs项目打包后可能会出现的问题有哪些

    这次给大家带来vuejs项目打包后可能会出现的问题有哪些,vuejs项目打包的注意事项有哪些,下面就是实战案例,一起来看一下。 一:使用CDN资源 我们在打包时,会将package.json里,dependencies对象里插件打包起来,我…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论