效果如下:
精华原理总结:
后台实现分页获取,前端实现点击切换页面按钮,重新请求分页数据进行展示
<div class="show_car ">
<!-- 对需要展示的列表数据carList进行循环,实现多个数据信息展示,@click绑定点击事件,点击数据信息内容,触发两个函数 getCarDetailImg以及 Myopen函数,触发多个函数,使用";"分隔-->
<div class="car horizon" v-for="item in carLists" @click="getCarDetailImg(item.id,item.name);Myopen('carBuyDetail')">
<!-- img 动态绑定显示图片-->
<img style="margin-right:22px" v-bind:src="item.photo"></img>
<!-- {{item.name}} 显示请求到的数据信息 -->
<p class="name">{{item.name}}</p>
<div>
<p class="info" >{{item.subName}}</p>
</div>
<div>
<p class="horizon fixed">一口价</p>
<p class="horizon price" >{{item.price}}</p>
<p class="horizon price">元</p>
<p class="horizon condition" >{{item.carConText}}</p>
</div>
</div>
<!-- 分页的点击事件 使用@click绑定点击事件,点击触发getCarList函数,请求新的数据-->
<div class="page_area">
<!--使用变量page记录当前页面-->
<p class="horizon" @click="getCarList(page-1)">上一页</p>
<p class="horizon">第{{page}}页</p>
<p class="horizon" @click="getCarList(page+1)"> 下一页</p>
</div>
</div>
附css代码
.car_buy {
width:1800px;
height:588px;
background:rgba(247,247,247,1);
position:relative;
margin:0 auto;
}
.car_buy .title{
position:absolute;
margin-top:82px;
margin-left:347px;
font-size:30px;
font-family:FontName;
color:rgba(51,51,51,1);
line-height:35px;
}
.car_buy .show_car{
position:absolute;
margin-left:347px;
margin-top:153px;
}
.car_buy .car{
height:320px;
width:260px;
padding-right:22px;
}
.car_buy .car .name{
width:222px;
height:20px;
font-size:17px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(51,51,51,1);
line-height:20px;
}
.car_buy .car .info{
font-size:14px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(153,153,153,1);
line-height:16px;
}
.car_buy .car .box{
text-align: -moz-center !important;
text-align: center;
vertical-align: middle;
}
.car_buy .car .fixed{
vertical-align: middle;
font-size:12px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(255,70,6,1);
line-height:18px;
}
.car_buy .car .price{
padding-left:2px;
vertical-align: middle;
font-size:18px;
font-family:PingFangSC-Medium,PingFang SC;
font-weight:500;
color:rgba(255,70,6,1);
line-height:8px;
}
.car_buy .car .condition{
position:absolute;
margin-left:226px;
vertical-align: middle;
text-align: center;
width:25px;
height:18px;
border:2px solid rgba(255,70,6,1);
border-radius:2px;
font-size:10px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(255,70,6,1);
line-height:18px;
}
.car_buy .car img{
height:195px;
width:260px;
}
.car_buy .page_area p{
padding:20px;
}
.car_buy .page_area{
margin-left:380px;
margin-top:340px;
}
javascript
date中声明使用到的变量信息
data:{
'carLists':[],//carLists 初始化为数组型数据
'page':1 //page初值为1
}
页面初始化时需要有数据信息,第一次getCarList请求可放在vue生命周期函数created中
created:function(){
this.getCarList(this.page);
}
获取数据函数getCarList,放在methods中
getCarList(page){
if(page == 0){ //page等于0,表示已是第一页,提示用户已到第一页
alert("已到第一页!")
return;
}
var self = this;
axios.get('请求参数',{
params: {
page: page, //后台支持必要参数,page请求页
pageSize: 4//后台支持必要参数,pageSize 请求数据量
},
headers:{ //其他头部参数
token:self.vistorToken
}
})
.then(function (response) {//请求成功
console.log(response);
if(response.data.data.length == 0){//请求数据长度为0,表示没有数据,提示用户到最后一页
alert("已到最后一页!")
return;
}
self.page = page;//无其他情况,表示请求成功,更新记录页面的page参数
self.carLists = response.data.data; //更新carLists信息
}
})
}
版权声明:本文为melon__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。