Javascript vue.js表格分页,ajax异步加载数据


Posted in Javascript onOctober 24, 2016

分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。

效果:

Javascript vue.js表格分页,ajax异步加载数据

代码:

1.注册一个组件

js

Vue.component('pagination',{
    template:'#paginationTpl',
    replace:true,
    props:['cur','all','pageNum'],
    methods:{
      //页码点击事件
      btnClick: function(index){
        if(index != this.cur){
          this.cur = index;
        }
      }
    },
    watch:{
      "cur" : function(val,oldVal) {
        this.$dispatch('page-to', val);
      }
    },
    computed:{
      indexes : function(){
        var list = [];
        //计算左右页码
        var mid = parseInt(this.pageNum / 2);//中间值
        var left = Math.max(this.cur - mid,1);
        var right = Math.max(this.cur + this.pageNum - mid -1,this.pageNum);
        if (right > this.all ) { right = this.all}
        while (left <= right){
          list.push(left);
          left ++;
        }
        return list;
      },
      showLast: function(){
        return this.cur != this.all;
      },
      showFirst: function(){
        return this.cur != 1;
      }
    }
  });

模板:

<script type="text/template" id="paginationTpl">
  <nav v-if="all > 1">
    <ul class="pagination">
      <li v-if="showFirst"><a href="javascript:" @click="cur--">«</a></li>
      <li v-for="index in indexes" :class="{ 'active': cur == index}">
        <a @click="btnClick(index)" href="javascript:">{{ index }}</a>
      </li>
      <li v-if="showLast"><a @click="cur++" href="javascript:">»</a></li>
      <li><a>共<i>{{all}}</i>页</a></li>
    </ul>
  </nav>
</script>

HTML:

<div id='item_list'>
  ...
  <pagination :cur="1" :all="pageAll" :page-num="10" @page-to="loadList"></pagination>
</div>

当点击分页链接的时候,通过watch cur,子组件分发 page-to 事件,通过 @page-to="loadList" 标签指定使用父组件 loadList 方法处理事件,父组件接收到page值然后ajax加载数据,根据服务端返回计算并更新自身的 pageAll 值,因为子组件prop通过 :all="pageAll" 动态绑定了父组件的pageAll对象,所以子组件会联动更新。

附上一个简单的表格组件例子:

var vm = new Vue({
    el: "#item_list",
    data: {
      items : [],
      //分页参数
      pageAll:0, //总页数,根据服务端返回total值计算
      perPage:10 //每页数量
    },
    methods: {
      loadList:function(page){
        var that = this;
        $.ajax({
          url : "/getList",
          type:"post",
          data:{"page":page,"perPage":this.perPage},
          dataType:"json",
          error:function(){alert('请求列表失败')},
          success:function(res){
            if (res.status == 1) {
              that.items = res.data.list;
              that.perPage = res.data.perPage;
              that.pageAll = Math.ceil(res.data.total / that.perPage);//计算总页数
            }
          }
        });
      },
      //初始化
      init:function(){
        this.loadList(1);
      }
    }
  });
  vm.init();

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
很全的显示阴历(农历)日期的js代码
Jan 01 Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
AngularJS路由切换实现方法分析
Mar 17 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
关于Vue组件库开发详析
Jul 01 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
Sep 25 Javascript
JavaScript判断浏览器版本的方法
Nov 03 Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 Javascript
H5移动端适配 Flexible方案
Oct 24 #Javascript
javascript的document中的动态添加标签实现方法
Oct 24 #Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 #Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 #Javascript
express文件上传中间件Multer详解
Oct 24 #Javascript
用js实现博客打赏功能
Oct 24 #Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 #Javascript
You might like
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
显示、隐藏密码
2006/07/01 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python书单 不将就
2017/07/11 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python版名片管理系统
2018/11/30 Python
python脚本开机自启的实现方法
2019/06/28 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
什么是接口(Interface)?
2013/02/01 面试题
会计主管岗位职责范文
2013/11/08 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
2014年安全生产责任书
2014/07/22 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
社区党支部承诺书
2015/04/29 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
浅谈PHP7中的一些小技巧
2021/05/29 PHP
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python