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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
javascript编程起步(第五课)
Jan 10 Javascript
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
javascript concat数组累加 示例
Sep 03 Javascript
Google Dart编程语法和基本类型学习教程
Nov 27 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
jquery制作select列表双向选择示例代码
Sep 02 Javascript
底部悬浮通栏可以关闭广告位的实现方法
Jun 01 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
JS随机数产生代码分享
Feb 24 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 Javascript
详解JavaScript之Array.reduce源码解读
Nov 01 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
浅谈javascript的数据类型检测
2010/07/10 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python版中国省市经纬度
2020/02/11 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
公司董事长职责
2013/12/12 职场文书
护士实习鉴定范文
2013/12/22 职场文书
教学大赛获奖感言
2014/01/15 职场文书
目标责任书范文
2014/04/14 职场文书
结对共建协议书
2014/08/20 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书