Vue全局分页组件的实现代码


Posted in Javascript onAugust 10, 2018

需求

一个监控控制台界面,有成千上万条表格数据,需要做一个全局分页组件,支持调整每页显示数目、总页数、当前页数、前进后退、自由跳转页数。

字段

参数名 数据类型 说明
total Number 总条数
pageNo Number 总页数
limit Number 每页展示条数

原型

预期长酱紫(不要嫌丑!毕竟是后台控制台!)

Vue全局分页组件的实现代码

代码

html

<template>
  <div class="paging-content clearfix">
    <div class="fl">
      总共<b> {{total}} </b>条 
      <select v-model="limit">
        <option>10</option>
        <option>20</option>
        <option>30</option>
        <option>40</option>
        <option>50</option>
        <option>100</option>
      </select>条/页
    </div>
    <div class="fr paging-box">
      <a v-if="+no>1" class="fa fa-angle-double-left" @click="goToPage(1)"></a>
      <a v-if="+no<=1" class="fa fa-angle-double-left"></a>
      <a v-if="+no>1" class="fa fa-angle-left" @click="goToPage(+no - 1)"></a>
      <a v-if="+no<=1" class="fa fa-angle-left"></a>
      <a v-if="+no-2>1">...</a>
      <a v-if="+no-2>0" @click="goToPage(+no-2)">{{+no - 2}}</a>
      <a v-if="+no-1>0" @click="goToPage(+no-1)">{{+no - 1}}</a>
      <a v-if="+no>0" style="color: #000;background: #eee;">{{no}}</a>
      <a v-if="+no+1<=+sum" @click="goToPage(+no+1)">{{+no + 1}}</a>
      <a v-if="+no+2<=+sum" @click="goToPage(+no+2)">{{+no + 2}}</a>
      <a v-if="+no+2<=+sum-1">...</a>
      <a v-if="+no<+sum" class="fa fa-angle-right" @click="goToPage(+no + 1)"></a>
      <a v-if="+no>=+sum" class="fa fa-angle-right"></a>
      <a v-if="+no<+sum" class="fa fa-angle-double-right" @click="goToPage(+sum)"></a>
      <a v-if="+no>=+sum" class="fa fa-angle-double-right"></a>
    </div>
  </div>
</template>

js

<script>
  module.exports = {
    props: ['no', 'limit', 'total'],
    computed: {
      sum: function() {
        return Math.ceil(this.total/this.limit);
      }
    },
    methods: {
      'goToPage': function(page_no) {
        this.$dispatch('page-change', page_no);
      }
    },
    watch: {
      'limit': function(newVal, oldVal) {
        if(newVal!=oldVal&&oldVal!=undefined) {
          this.$dispatch('page-limit-change', newVal);
        }
      }
    }
  }
</script>

css

<style lang="less" rel="stylesheet/less">
  //定义了一个颜色参数文件,方便自定义颜色和管理,比如@color-white: #fff;
  @import "../less/variables"; 
  .paging-content {
    > div {
      font-size: 12px;
      color: @color-text-normal;
    }
    select {
      margin-right: 4px;
    }
    .fl {
      float: left;
    }
    .fr {
      float: right;
    }
    .paging-box {
      border-top: 1px solid #ccc;
      border-bottom: 1px solid #ccc;
      border-left: 1px solid #ccc;
      a {
        display: inline-block;
        width: 24px;
        height: 24px;
        border-right: 1px solid #ccc;
        line-height: 24px;
        text-align: center;
        float: left;
        color: @color-text-blue;
        cursor: pointer;
      }
    }
  }
</style>

局部组件使用方法

引入

import page from 'example-page'

注册组件

components:{
  page: page
},

模板

<paging :no.sync="params.page_no" :limit.sync="params.page_limit" :total.sync="total_items"></paging>

以上是制作步骤,制作好组件以后,参考Vue官网插件发布

npm 发包

  1. 确保你的项目的根目录的package.json文件已经建好
  2. 登录npm官网注册
  3. 在你的项目目录下登录npm login(之后按提示填写信息)
  4. 发包npm publish

如果执行npm publish出现错误,可能是你的包名已经被注册过,在npm 官网上搜索一下是否已被注册了。若发包成功,你就可以在npm官网上搜索到自己的包。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 模拟类搜索框自动完成搜索提示功能(改进)
May 24 Javascript
JQuery.Ajax之错误调试帮助信息介绍
Jul 04 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
首页图片漂浮效果示例代码
Jun 05 Javascript
js 将图片连接转换成base64格式的简单实例
Aug 10 Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
微信小程序调用PHP后台接口 解析纯html文本
Jun 13 Javascript
基于JavaScript实现抽奖系统
Jan 16 Javascript
JS apply用法总结和使用场景实例分析
Mar 14 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 #Javascript
JavaScript闭包原理与用法实例分析
Aug 10 #Javascript
vue 动态绑定背景图片的方法
Aug 10 #Javascript
原生JS实现$.param() 函数的方法
Aug 10 #Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 #Javascript
JavaScript创建对象的常用方式总结
Aug 10 #Javascript
详解如何在nuxt中添加proxyTable代理
Aug 10 #Javascript
You might like
php操纵mysqli数据库的实现方法
2016/09/18 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
日语专业毕业生求职信
2013/12/04 职场文书
趣味活动策划方案
2014/02/08 职场文书
《在家里》教后反思
2014/03/01 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
师德模范事迹材料
2014/06/03 职场文书
学校食品安全实施方案
2014/06/14 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
Java版 简易五子棋小游戏
2022/05/04 Java/Android