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 相关文章推荐
Javascript 获取链接(url)参数的方法[正则与截取字符串]
Feb 09 Javascript
深入理解JavaScript系列(13) This? Yes,this!
Jan 18 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
Nov 17 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
微信小程序 swiper组件详解及实例代码
Oct 25 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
Apr 21 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
JavaScript 继承 封装 多态实现及原理详解
Jul 29 Javascript
NUXT SSR初级入门笔记(小结)
Dec 16 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中的魔术方法总结和使用实例
2015/05/11 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
Python走楼梯问题解决方法示例
2018/07/25 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python之生成多层json结构的实现
2020/02/27 Python
python openCV自制绘画板
2020/10/27 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
售前工程师职业生涯规划
2014/03/02 职场文书
小组名称和口号
2014/06/09 职场文书
119消防日活动总结
2014/08/29 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
先进个人推荐材料
2014/12/29 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android