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 相关文章推荐
struts2 jquery 打造无限层次的树
Oct 23 Javascript
JS拖动技术 关于setCapture使用
Dec 09 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
Jun 07 Javascript
如何用angularjs制作一个完整的表格
Jan 21 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
JS双击变input框批量修改内容
Dec 12 Javascript
微信小程序 Template详解及简单实例
Jan 05 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
vue自定义filters过滤器
Apr 26 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 Javascript
Vue项目引进ElementUI组件的方法
Nov 11 Javascript
elementUI select组件使用及注意事项详解
May 29 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
php处理斐波那契数列非递归方法
2012/02/04 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python抓取京东图书评论数据
2014/08/31 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
python实现磁盘日志清理的示例
2020/11/05 Python
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
高三毕业寄语
2014/04/10 职场文书
物业品质提升方案
2014/06/08 职场文书
卫生标语大全
2014/06/21 职场文书
爱心捐书活动总结
2014/07/05 职场文书
小马王观后感
2015/06/11 职场文书
运动会通讯稿300字
2015/07/20 职场文书
解析Java异步之call future
2021/06/14 Java/Android