组件是Vue最强大的功能之一,可以扩展HTML功能,封装可重用的代码。分页组件是网页中常用的,本篇文章介绍如何简单封装一个分页组件。
我们使用全局注册的方式来开发一个组件,形式如下:
Vue.component('组件名称',{
...配置项
});
思路
我们通过props传入参数,在page组件内部计算需要显示的页码。
//props 参数 total//数据总条数 pagesize //每页显示数 page //当前页码 总页数计算:Math.ceil(total/pagesize) 当页码改变时,触发一个pagechange事件,父组件中可以捕获该事件。代码
Vue.component('page',{
props:{
total:{
type:[Number,String],
default:0
},
pagesize:{
type:[Number,String],
default:1
},
page:{
type:[Number,String],
default:1
}
},
template:''+
'- '+
'
- 上一页 '+ '
- 首页 '+ '
- '+ '{{item}}'+ ' '+ '
- 尾页 '+ '
- 下一页 '+ '
- 总共{{totalCount}}页 '+ '
div.page{
font-size: 12px;
font-family:'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
color: #666;
user-select: none;
}
div.page ul{
padding: 0;
margin:0;
}
div.page ul li{
display: inline-block;
min-width:30px;
min-height:30px;
border-radius:3px;
line-height: 30px;
text-align: center;
margin: 0 6px;
cursor: pointer;
}
div.page ul li.active{
background: #1796e0;
color:#fff;
}
div.page ul li.disable{
color: #ccc;
}
使用方式
//html代码
...
//js代码
new Vue({
el:'#app',
data:{
page:1,
pageSize:5,
total:100
},
methods:{
pageChange(e){
this.page=e.page;
}
}
});
...
最终效果:



