利用VUE框架,實(shí)現(xiàn)列表分頁功能示例代碼
先來看一下效果圖:

功能描述:
1. 點(diǎn)擊頁面序號跳轉(zhuǎn)到相應(yīng)頁面;
2. 點(diǎn)擊單左/單右,向后/向前跳轉(zhuǎn)一個(gè)頁面;
3. 點(diǎn)擊雙左/雙右,直接跳轉(zhuǎn)到最后一頁/第一頁;
4. 一次顯示當(dāng)前頁面的前三個(gè)與后三個(gè)頁面;
5. 始終顯示最后一個(gè)頁面;
HTML:
<!-- 分頁開始 -->
<div class="u-pages" style="margin-bottom:20px; margin-top:10px;">
<ul>
<li v-if="showPre" class="crt"><a v-on:click="jumpFirst(cur)"> << </a></li>
<li v-if="showPre" class="crt"><a v-on:click="minus(cur)"> < </a></li>
<template v-for="index in indexs" >
<li class="{{classRenderer(index)}}">
<a v-on:click="btnClick(index)" >{{index}}</a>
</li>
</template>
<li v-if="showMoreTail" class="crt">..</li>
<li class="{{classRenderer(pageNo)}}"><a @click="btnClick(pageNo)">{{pageNo}}</a></li>
<li v-if="showTail" class="crt"><a v-on:click="plus(cur)">></a></li>
<li v-if="showTail" class="crt"><a v-on:click="jumpTail(cur)">>></a></li>
</ul>
</div>
<!-- 分頁結(jié)束 -->
HTML方法分析:
1、
<li class="{{classRenderer(index)}}">
classRenderer()方法實(shí)現(xiàn)了當(dāng)點(diǎn)擊頁面索引是,點(diǎn)擊頁面獲得選中效果
2、
<a v-on:click="btnClick(index)" >{{index}}</a>
btnClick()方法,實(shí)現(xiàn)了點(diǎn)擊頁面索引,跳轉(zhuǎn)到相應(yīng)頁面
showPre showTail
showPre控制跳轉(zhuǎn)到第一頁與跳轉(zhuǎn)到前一頁的按鈕的顯示與消除
showTail控制跳轉(zhuǎn)到最后一頁與跳轉(zhuǎn)到后一頁的按鈕的顯示與消除
cur
記錄當(dāng)前頁序號
jumpFirst(cur) minus(cur) plus(cur) jumpTail(cur)
實(shí)現(xiàn)按鈕跳轉(zhuǎn)功能
JS:
module.exports = {
data: function () {
return {
cur:1,
showTail:true,
showMorePre: false,
showMoreTail: false,
}
},
methods:{
jumpFirst:function(data){
var $this = this;
data = 1;
$this.cur = data;
if (data == 1 )
{
$this.$set("showPre", false);
}else
{
$this.$set("showPre", true);
}
$this.$am.ajax({
url:window.$ApiConf.api_order_detail_list,
type:'GET',
data:{start: 1},
success: function(data){
console.log(data);
$this.$set("records", data.record.records);
$this.$set("start", data.record.query.start);
$this.$set("total", data.record.query.total);
$this.$set("limit", data.record.query.limit);
}
})
$this.$set("showTail", true);
return data;
},
minus:function(data){
var $this = this;
data--;
$this.cur = data;
$this.$set("showTail", true);
if(data == 1){
$this.$set("showPre", false);
}else{
$this.$set("showPre", true);
}
$this.$am.ajax({
url:window.$ApiConf.api_order_detail_list,
type:'GET',
data:{start: 1 + $this.limit * (data-1) },
success:function(data){
console.log(data);
$this.$set("records", data.record.records);
$this.$set("start", data.record.query.start);
$this.$set("total", data.record.query.total);
$this.$set("limit", data.record.query.limit);
}
})
return data;
},
plus: function(data){
var $this = this;
data++;
$this.cur = data;
$this.$set("showPre", true);
if (data == $this.pageNo)
{
$this.$set("showTail", false);
}else
{
$this.$set("showTail", true);
}
$this.$am.ajax({
url:/* 這里寫上你自己請求數(shù)據(jù)的路徑 */,
type:'GET',
data:{start: 1 + $this.limit * (data-1) },
success:function(data){
console.log(data);
$this.$set("records", data.record.records);
$this.$set("start", data.record.query.start);
$this.$set("total", data.record.query.total);
$this.$set("limit", data.record.query.limit);
}
})
return data;
},
classRenderer:function(index){
var $this = this;
var cur = $this.cur;
if(index != cur){
return 'crt';
}
return '';
},
btnClick:function(data){
var $this = this;
if(data == 1){
$this.$set("showPre", false);
}else{
$this.$set("showPre", true);
}
if (data == $this.pageNo)
{
$this.$set("showTail", false);
}else
{
$this.$set("showTail", true);
}
if (data != $this.cur)
{
$this.cur = data;
$this.$am.ajax({
url:window.$ApiConf.api_order_detail_list,
type:'GET',
data:{start: 1 + $this.limit * (data-1) },
success:function(data){
console.log(data);
$this.$set("records", data.record.records);
$this.$set("start", data.record.query.start);
$this.$set("total", data.record.query.total);
$this.$set("limit", data.record.query.limit);
}
})
}
},
jumpTail:function(data){
var $this = this;
data = $this.pageNo;
$this.cur = data;
if (data == $this.pageNo)
{
$this.$set("showTail", false);
}else
{
$this.$set("showTail", true);
}
$this.$am.ajax({
url:window.$ApiConf.api_order_detail_list,
type:'GET',
data:{start: 1 + $this.limit * (data-1) },
success:function(data){
console.log(data);
$this.$set("records", data.record.records);
$this.$set("start", data.record.query.start);
$this.$set("total", data.record.query.total);
$this.$set("limit", data.record.query.limit);
}
})
$this.$set("showPre", true);
return data;
},
computed: {
//*********************分頁開始******************************//
indexs: function(){
var $this = this;
var ar = [];
if ($this.cur > 3)
{
ar.push($this.cur - 3);
ar.push($this.cur - 2);
ar.push($this.cur - 1);
}else
{
for (var i = 1; i < $this.cur; i++)
{
ar.push(i);
}
}
if ($this.cur != $this.pageNo)
{
ar.push($this.cur);
}
if ( $this.cur < ( $this.pageNo - 3 ) )
{
ar.push($this.cur + 1);
ar.push($this.cur + 2);
ar.push($this.cur + 3);
if ( $this.cur < ( $this.pageNo - 4 ) )
{
$this.$set("showMoreTail", true);
}
}else
{
$this.$set("showMoreTail", false);
for (var i = ($this.cur + 1); i < $this.pageNo; i++)
{
ar.push(i);
}
}
return ar;
}
//*********************分頁結(jié)束******************************//
}
}
JS功能分析:indexs用于記錄一共有多少頁面
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 前端框架Vue.js中Directive知識詳解
- 前端框架Vue.js構(gòu)建大型應(yīng)用淺析
- vue,angular,avalon這三種MVVM框架優(yōu)缺點(diǎn)
- Vue框架中正確引入JS庫的方法介紹
- vue.js中mint-ui框架的使用方法
- 使用vue框架 Ajax獲取數(shù)據(jù)列表并用BootStrap顯示出來
- Vue2.0 UI框架ElementUI使用方法詳解
- 前端框架學(xué)習(xí)總結(jié)之Angular、React與Vue的比較詳解
- 基于Vuejs框架實(shí)現(xiàn)翻頁組件
- 小白教程|一小時(shí)上手最流行的前端框架vue(推薦)
相關(guān)文章
用Vue-cli搭建的項(xiàng)目中引入css報(bào)錯(cuò)的原因分析
本篇文章主要介紹了用Vue-cli搭建的項(xiàng)目中引入css報(bào)錯(cuò)的原因分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
vue打包并部署到nginx上的實(shí)現(xiàn)示例
本文主要介紹了vue打包并部署到nginx上的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
vue中使用go()和back()兩種返回上一頁的區(qū)別說明
這篇文章主要介紹了vue中使用go()和back()兩種返回上一頁的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue實(shí)現(xiàn)頁面自適應(yīng)的常用4種方法
前端頁面自適應(yīng)有很多方法可以實(shí)現(xiàn),本文小編將為大家詳細(xì)介紹四種常用的方法,并提供相應(yīng)的代碼示例,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
Vue基于Element-ui實(shí)現(xiàn)表格彈窗組件
這篇文章主要為大家詳細(xì)介紹了Vue基于Element-ui實(shí)現(xiàn)表格彈窗組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
vue.js實(shí)現(xiàn)帶日期星期的數(shù)字時(shí)鐘功能示例
這篇文章主要介紹了vue.js實(shí)現(xiàn)帶日期星期的數(shù)字時(shí)鐘功能,涉及vue.js基于定時(shí)器的日期時(shí)間運(yùn)算與數(shù)值操作相關(guān)使用技巧,需要的朋友可以參考下2018-08-08

