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 相关文章推荐
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
Feb 15 Javascript
IE与FireFox的兼容性问题分析
Apr 22 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
Jan 04 Javascript
js选项卡的制作方法
Jan 23 Javascript
详解node.js搭建代理服务器请求数据
Apr 08 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
微信小程序实现评论功能
Nov 28 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
JS + HTML 罗盘式时钟的实现
May 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
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python文件操作相关知识点总结整理
2016/02/22 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
贺卡寄语大全
2014/04/11 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书