vue的分页组件
<template>
<div class="page-nav">
<div class="page-btn-wrap">
<span class="prev"
v-bind:class="{ disabled: currPage==1 }"
v-on:click="pagePrev"
>
上页
</span>
<span class="item
"v-bind:class="{ active: item==currPage }"
v-for="(item,index) in list"
:key="index"
v-on:click="pageTo(item)"
>
{{item}}
</span>
<span class="next"
v-bind:class="{ disabled: currPage==totalPage }"
v-on:click="pageNext"
>
下页
</span>
</div> </div>
</template> <script >
export default {
name:"page",
data(){
return{ sideNum:2, //显示页面按钮的一半,向下取整
currPage:1, //当前页面
totalPage:0, //需要分的页数, 例如有30条数据,每页为10条,则需要三页
list:[] }
}, props:{
"total":{
type: Number,
default:0
},
"pagesize":{
type:Number,
default:10,
},
"showPage":{
type:Number,
default:5
},
"pagenum":{
type:Number,
default:1
}
},
methods:{
getOffetSize:function(){
var that = this;
var start = 1;
var end = that.showPage;
if(that.totalPage < that.showPage) {
return {
start: 1,
end: this.totalPage
}
}
start = that.currPage - that.sideNum;
end = that.currPage + that.sideNum; if(start <= 1) {
start = 1;
end = that.showPage;
}
if(end >= that.totalPage) {
end = that.totalPage;
start = that.totalPage - 2 * that.sideNum;
} return {
start: start,
end: end
}
},
layout:function(){
//得到开始和结束
var that = this;
var list = [];
var opt = that.getOffetSize();
for(var i = opt.start ; i <= opt.end ; i++){
list.push(i);
}
that.list = list;
},
pageTo:function(pageNum){
var that = this;
that.currPage = pageNum;
that.layoutEmit();
},
pagePrev:function(){
var that = this;
var pageNum = that.currPage - 1; if(pageNum < 1){
return;
} that.currPage = pageNum;
that.layoutEmit();
},
pageNext:function(){
var that = this;
var pageNum = that.currPage + 1; if(pageNum > that.totalPage){
return;
}
that.currPage = pageNum;
that.layoutEmit();
},
layoutEmit(){
var that = this;
that.layout();
that.$emit("pagec",that.currPage);
}
},
watch:{
"total":function(newa,oldb){
var that = this;
that.currPage = 1;
console.log(newa,oldb);
that.totalPage = Math.ceil(newa / that.pagesize);
that.layout(); },
"pagenum":function(newa,oldb){
this.currPage = newa;
}
},
mounted:function(){
var that = this;
that.pagesize = that.pagesize || 10;
that.sildeNum = Math.floor(that.showPage / 2);
that.totalPage = Math.ceil(that.total / that.pagesize); that.layout(); }
}
</script> <style type="text/css" lang="less">
.page-nav{
.page-btn-wrap{
span{
display: inline-block;
width: 80px;
height: 26px;
line-height: 26px;
text-align: center;
border: 1px solid #ccc;
cursor: pointer;
}
span.prev,span.next{
width: 120px;
}
span.active{
background: #0099FF;
}
span.disabled{
background: #ccc;
}
}
}
</style>
使用
<page-btn
v-on:pagec="pagec"
:total="total"
:pagesize='opt.pagesize'
:pagenum='opt.pagenum'
></page-btn>
vue的分页组件的更多相关文章
- 基于Vue封装分页组件
使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} ...
- 基于iview 封装一个vue 表格分页组件
iview 是一个支持中大型项目的后台管理系统ui组件库,相对于一个后台管理系统的表格来说分页十分常见的 iview是一个基于vue的ui组件库,其中的iview-admin是一个已经为我们搭好的后天 ...
- vue 封装分页组件
分页 一般都是调接口, 接口为这种格式 {code: 0, msg: "success",…} code:0 data:{ content:[{content: "11& ...
- 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稿,然后重 ...
- vue封装分页组件
element提供的分页是已经封装好的组件,在这里再次封装是为了避免每个用到分页的页面点击跳转时都要写一遍跳转请求 分页组件 <!--分页组件--> <template> &l ...
- vue element-ui 分页组件封装
<template> <el-pagination @size-change="handleSizeChange" @current-change="h ...
- vue实现分页组件
创建pagination.vue /* * 所需参数 * total Number 总页数 * current Number 当前页面下标 * pageSize Number 页面显示条数 * siz ...
随机推荐
- svn checkout 指定目录(转)
http://www.uqugu.com/blog/article/svn-checkout-specified-forder/ svn有时只想检出指定目录,对于其他的大文件目录则不想检出,如不想检出 ...
- db2 应用的最常见状态(转)
db2 的应用最常见的状态为UOW Executing, UOW Waiting, Connect Completed等,这里做一个简单的介绍. UOW全称是Unit Of Work, 可以认为是事 ...
- Mapper 赋值对应实体属性
public static class MapperExtensions { public static TResult MapTo<TResult>(this object self, ...
- SQL之层次查询
层次查询是一种确定数据行间关系的一种操作手段.层次查询遍历的是一个树形结构.基本语法如下,以下语法嵌入到标准SQL中即可达到层次查询的目的: level,... ...[注释:伪列,用于select子 ...
- Django:模型model和数据库mysql(二)
上一篇把简单的模型与数据库的搭建写了一遍,但模型中有很多深入好用的写法补充一下. 同样的栗子,建立新的模型与数据库来写一写 1.依然是搭建环境 >>>django-admin sta ...
- centos7上安装nagios及增加监控服务器
参考博客 http://blog.csdn.net/firstar521/article/details/52848393 当配置了linux.cfg和Windows.cfg文件,重启nagios后发 ...
- ms sql server读取xml文件存储过程-sp_xml_preparedocument
最近要在存储过程中读取xml中节点的值,然后进行sql操作: 要使用到的系统存储过程如下:sp_xml_preparedocument create procedure [dbo].[pro_Test ...
- 转:CSS设置HTML元素的高度与宽度的各种情况总结
1.元素不设宽度第一种情况:元素为文档流中元素<!-- 父元素宽度为100px --><div style="width:100px;"> < ...
- Django实现邮件发送功能
首先申请邮箱并在设置中申请到授权码,授权码的目的仅仅是让你有权限发邮件,但是不能登录到邮箱进行修改,发送邮件时,可以代替密码 1,配置文件settings.py #邮件服务配置文件 EMAIL_USE ...
- AT2134 Zigzag MST 最小生成树
正解:最小生成树 解题报告: 先放下传送门QAQ 然后这题,首先可以发现这神奇的连边方式真是令人头大,,,显然要考虑转化掉QAQ 大概看一下可以发现点对的规律是,左边++,交换位置,再仔细想下,就每个 ...