vue 封装分页组件
分页 一般都是调接口, 接口为这种格式
- {code: 0, msg: "success",…}
- code:0
- data:{
- content:[{content: "11", time: "22", },…] //数据列表
- nextPage:1 //上一页
- number:0 //第几页
- numberOfElements:10
- prevPage:1 //下一页
- size:10 //页数
- totalElements:257
- totalPages:26 //总页数
- }
- msg:"success"
- /**
- * 分页
- * @privat
- * 全局用的分页组件
- */
- var _pageTemplate='' +
- '<div class="page-bar">' +
- ' <ul>' +
- ' <li v-if="pageNow>1"><a v-on:click="pageClick(pageNow-1)">上一页</a></li>' +
- ' <li v-if="pageNow==1"><a class="banclick">上一页</a></li>' +
- ' <li v-for="index in indexs" v-bind:class="{ \'active\': pageNow == index}">' +
- ' <a v-on:click="pageClick(index)">{{ index }}</a>' +
- ' </li>' +
- ' <li v-if="pageNow!=pages"><a v-on:click="pageClick(pageNow+1)">下一页</a></li>' +
- ' <li v-if="pageNow == pages"><a class="banclick">下一页</a></li>' +
- ' <li><a>共<i>{{pages}}</i>页</a></li>' +
- ' <li><a><span>跳转到第</span></a></li>' +
- ' <li><a><input type="text" v-model="inputNumber" @input="checkNumber()" style="width: 50px" maxlength="4"></a></li>' +
- ' <li><a><span>页</span></a></li>'+
- ' <li><a><span @click="pageClick(inputNumber)">确定</span></a></li>'+
- ' </ul>' +
- '</div>';
- Vue.component('vue-page',{
- template:_pageTemplate,
- props:["page_number","pages","jump"], //接收参数
- data:function(){
- return{
- pageNow:this.page_number,
- inputNumber:"",
- num:this.page_number,
- }
- },
- //监听事件
- // watch: {
- // cur: function(oldValue , newValue){
- // console.log(arguments);
- // }
- // },
- //方法处理
- methods: {
- checkNumber:function () {
- var that =this;
- var reg = /[^0-9.]/g; //正则检验是否数字
- if (reg.test(that.inputNumber)) {
- that.inputNumber="";
- }
- },
- pageClick:function(e){
- e=Number(e);
- if(e>this.pages){
- e=this.pages;
- this.inputNumber=this.pages;
- }
- if(e != this.page_number||e==this.num){
- this.pageNow =e;
- }
- this.jump(e)
- }
- },
- //计算属性
- computed: {
- indexs: function(){
- var left = 1;
- var right = this.pages;
- var ar = [];
- if(this.pages>= 5){
- if(this.pageNow > 3 && this.pageNow < this.pages-2){
- left = this.pageNow - 2;
- right = this.pageNow + 2
- }else{
- if(this.pageNow<=3){
- left = 1;
- right = 5
- }else{
- right = this.pages;
- left = this.pages -4
- }
- }
- }
- while (left <= right){
- ar.push(left);
- left ++
- }
- return ar
- }
- }
- });
这是封装得组件
- data:{
- //分页
- page:1,//第几页
- pages: 10, //总页数
- pagesize: 10,//分页数量
- }
- 调用ajax 渲染数据
- Journal:function (index) {
var that =this;
that.page=index;
Comm.runebws("url",{
count:that.pagesize, //预定好跟接口
page:that.page //预定好跟接口
- },"GET",function (result) {
if(result.code==0){
that.Journals=result.data.content;
that.pages=result.data.totalPages;- }
})
}
前端html代码
- <div v-for="item in Journals">
- <div class="middle-list"><div class="middle-list-data">{{item.time}}</div></div>
- <div class="middle-list"><div class="middle-list-name">{{item.ip}}</div></div>
- <div class="middle-list"><div class="middle-list-go">{{item.content}}</div></div>
- </div>
- .page-bar{
- }
- ul,li{
- margin: 0px;
- padding: 0px;
- }
- li{
- list-style: none
- }
- .page-bar li:first-child>a {
- margin-left: 0px
- }
- .page-bar a{
- border: 1px solid #6062A3;
- text-decoration: none;
- position: relative;
- float: left;
- padding: 6px 12px;
- margin-left: -1px;
- line-height: 1.42857143;
- color: #337ab7;
- cursor: pointer
- }
- .page-bar a:hover{
- /*background-color: #eee;*/
- }
- .page-bar a.banclick{
- cursor:not-allowed;
- }
- .page-bar .active a{
- color: #fff;
- cursor: default;
- background-color: #337ab7;
- border-color: #337ab7;
- }
- .page-bar i{
- font-style:normal;
- color: #d44950;
- margin: 0px 4px;
- font-size: 12px;
- }
vue 封装分页组件的更多相关文章
- 基于Vue封装分页组件
使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} ...
- vue封装分页组件
element提供的分页是已经封装好的组件,在这里再次封装是为了避免每个用到分页的页面点击跳转时都要写一遍跳转请求 分页组件 <!--分页组件--> <template> &l ...
- 基于iview 封装一个vue 表格分页组件
iview 是一个支持中大型项目的后台管理系统ui组件库,相对于一个后台管理系统的表格来说分页十分常见的 iview是一个基于vue的ui组件库,其中的iview-admin是一个已经为我们搭好的后天 ...
- semantic、vue 使用分页组件和日历插件
最近正在试试semantic-ui,结合了vue,这里忍不住吐槽semantic和vue的友好度简直不忍直视,不过既然用了,这里就分享几个用到的插件了 1.分页组件(基于vue) var pageCo ...
- vue 自定义分页组件
vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...
- vue自定义分页组件---切图网
vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重 ...
- echars vue 封装全局组件 曲线 柱状图 同v-chars绿色系 配置样式
Echars vue封装 ,曲线图 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- vue element-ui 分页组件封装
<template> <el-pagination @size-change="handleSizeChange" @current-change="h ...
- Vue封装公共组件TarBar
github:https://github.com/zwnsyw/TabBar 一.实现简单思路 1.在页面底部有一个单独的TabBar组件1.1自定义TabBar组件,在APP中使用1.2让TabB ...
随机推荐
- 如何使得 python 脚本 不一闪而过
1. 简单的方法是在最后加上如下语句: os.system("pause") 2. 但是这个不一定有用,原因是可能在之前的代码中发生异常,那么我们看到的效果也是直接一闪而过 办法 ...
- IT兄弟连 JavaWeb教程 JSP访问JavaBean
在JSP网页中,既可以通过程序代码来访问JavaBean,也可以通过特定的JSP标签来访问JavaBean.采用后一种方法,可以减少JSP网页中的程序代码,使他更接近与HTML页面.下面介绍访问Jav ...
- scrapy.Request使用meta传递数据,以及deepcopy的使用
scrapy.Request(url[,callback,method="GET",headers,body,cookies,meta,dont_filter=False]) ...
- 【bzoj3033】太鼓达人
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 521 Solved: 399[Submit][Status][Discuss] ...
- HDU6441(费马大定理)
听队友说过结论:a^n + b^n = c^n在n > 2时无解. 勾股那里本菜数学不好直接暴举了Orz. 跟大家学一波勾股数的构造:a是奇数时,tmp = a / 2; b = (tmp + ...
- oracle GROUP BY rollup
1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.De ...
- (转)C#文件操作大全
转自:https://www.cnblogs.com/wangshenhe/archive/2012/05/09/2490438.html 文件与文件夹操作主要用到以下几个类: 1.File类: 提供 ...
- asp.net网页跳转
1.Response.Redirect("http://www.bcbbs.net",false); 目标页面和原页面可以在2个服务器上,可输入网址或相对路径.后面的bool ...
- 用java代码写一个简单的网上购物车程序
需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法. 3.写一个购物车类,有添加商品方法.查看订单信息,删除商品,修 ...
- MySql中查询语句实现分页功能
import java.util.*;import java.sql.*; public class FruitDao { private Connection conn; private ...