基於vue2的table分頁元件實作方法
這篇文章主要為大家詳細介紹了基於vue2的table分頁組件實現方法,具有一定的參考價值,有興趣的小伙伴們可以參考一下
本文實例為大家分享了vue2 table分頁元件的具體程式碼,供大家參考,具體內容如下
##pagination.js:
(function(){ var template = '<p class="page-bar" > \ <p class="info">{{info}}</p>\ <p class="showpages">每页<select class="showpages-select" v-on:change="pageschange" v-model="selected" ><option v-for="item in showpages">{{item}}</option></select>条</p>\ <p class="pagesbtn"><ul v-on:click="setpage"> \ <li ><a v-bind:class="setButtonClass(0)" v-on:click="firstPage()">首页</a></li> \ <li><a v-bind:class="setButtonClass(0)" v-on:click="prvePage()">上一页</a></li> \ <li v-for="index in indexs" v-bind:class="{ active: cur == index }"> \ <a v-on:click="btnclick(index)" >{{ index < 1 ? "..." : index }}</a> \ </li> \ <li ><a v-bind:class="setButtonClass(1)" v-on:click="nextPage()">下一页</a></li> \ <li ><a v-bind:class="setButtonClass(1)" v-on:click="lastPage()">尾页</a></li> \ </ul></p> \ </p>\ ' var pagination = Vue.extend({ template: template, props: ["cur", "all", "selected", "showpages", "info"], computed: { indexs: function () { var left = 1 var right = this.all var ar = [] if (this.all >= 11) { if (this.cur > 5 && this.cur < this.all - 4) { left = this.cur - 5 right = this.cur + 4 } else { if (this.cur <= 5) { left = 1 right = 10 } else { right = this.all left = this.all - 9 } } } while (left <= right) { ar.push(left) left++ } if (ar[0] > 1) { ar[0] = 1; ar[1] = -1; } if (ar[ar.length - 1] < this.all) { ar[ar.length - 1] = this.all; ar[ar.length - 2] = 0; } return ar } }, methods: { btnclick: function (page) { this.cur = page; }, nextPage: function () { if (this.cur >= this.all) { this.cur=this.all; }else{ this.cur++; } }, prvePage: function () { if (this.cur <= 1) { this.cur=1; }else{ this.cur--; } }, firstPage: function () { this.cur=1; }, lastPage: function () { this.cur=this.all; }, setButtonClass: function (isNextButton) { if (isNextButton) { return this.cur >= this.all ? "page-button-disabled" : "" } else { return this.cur <= 1 ? "page-button-disabled" : "" } }, setpage:function () { this.$emit('mypage', this.cur); }, pageschange:function () { this.$emit('pageschange', this.selected); } } }) window.Pagination = pagination })()
ul, li { margin: 0; padding: 0; } .page-bar { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; float: right; border-radius: 4px; } .page-bar .info{ float: left; margin-left:16px; font-size: 16px; height: 100%; } .page-bar .showpages{ float: left; font-size: 16px; margin-left: 16px; height: 100%; } .page-bar .showpages .showpages-select{ width: 70px; margin: 0 10px; height: 28px } .page-bar .pagesbtn{ float: left; margin-left:16px; width: 650px; height: 100%; } .page-bar .pagesbtn ul{ text-align: center; width: 100%; } .page-button-disabled { color:#ddd !important; } .page-bar li { list-style: none; display: inline-block; } .page-bar li:first-child > a { margin-left: 0; } .page-bar a { border: 1px solid #ddd; text-decoration: none; position: relative; float: left; padding: 6px 12px; line-height: 1.42857143; color: #337ab7; cursor: pointer; } .page-bar a:hover { background-color: #eee; } .page-bar .active a { color: #fff; cursor: default; background-color: #1e7aca; border-color: #1e7aca; } .page-bar i { font-style: normal; color: #1e7aca; margin: 0 4px; font-size: 12px; }
#
<table class="table table-bordered table-hover "id="ggztable" v-show="isAddSpecifications"> <thead> <tr> <th>规格值</th> <th>操作</th> </tr> </thead> <tbody> <tr v-for="(item,nn) in limitTemps"> <td>{{item.value}}</td> <td> <img src='../img/common_edit@25.png' data-toggle="modal" data-target="#editSonModal" @click="editSonModal(item,nn)" alt='修改'> <img src='../img/common_del@25.png' data-toggle="modal" data-target="#delSonModal" @click="delSonModal(nn)" alt='删除'> </td> </tr> </tbody> </table> <vue-pagination :cur="specificationValCur":all="specificationValAll":info="specificationValInfo" :showpages="specificationValShowpages":selected="specificationValselected" v-on:mypage="getPage" v-on:pageschange="getspecificationValShowPages"> </vue-pagination>
/** * Created by komi on 2017-03-05 0005. */ var vm = new Vue({ el: ".main", data: { specificationValCur: 1,//当前页 specificationValAll: 1,//总页数 specificationValselected: 10,//默认每页显示的页数 specificationValTotalRecond: 1,//总记录数 specificationValShowpages: [10, 30, 50, 100], //每页显示的页数 specificationValInfo: "", limitTemps: [], temps:[]//数据源 }, watch: { temps: "setPage" }, components: { 'vue-pagination': Pagination }, methods: { setPage: function () { this.specificationValInfo = "记录数为:" + this.temps.length + "条"; this.specificationValTotalRecond = this.temps.length; this.setPageBtn(); this.setPageLimit(this.specificationValTotalRecond,this.specificationValselected,1) }, getPage:function (msg) { this.specificationValCur=msg;//这里必须,否则按钮无法高亮 this.setPageLimit(this.specificationValTotalRecond,this.specificationValselected,msg) }, setPageLimit: function (total,select,cur) {//这里为实现分页切换table的主要实现 if(total<=select){ this.limitTemps=this.temps; return }else { var arr = []; var a=select*(cur-1); var b=select*cur; for (var i = a; i < b; i++) { if(typeof(this.temps[i])!="undefined"){ arr[i - a] = this.temps[i] } } this.limitTemps = arr; } console.log("total:"+total+"select"+select+"cur"+cur) }, setPageBtn: function () { if (this.specificationValTotalRecond > this.specificationValselected) { if (this.specificationValTotalRecond % this.specificationValselected == 0) { this.specificationValAll = this.specificationValTotalRecond / this.specificationValselected } else { this.specificationValAll = parseInt(this.specificationValTotalRecond / this.specificationValselected) + 1 } } else { this.specificationValAll = 1 } }, getspecificationValShowPages: function (pages) { this.specificationValselected = pages; this.setPageBtn(); this.setPageLimit(this.specificationValTotalRecond,this.specificationValselected,1) } } });
以上是基於vue2的table分頁元件實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

本教程將介紹如何使用 Chart.js 創建餅圖、環形圖和氣泡圖。此前,我們已學習了 Chart.js 的四種圖表類型:折線圖和條形圖(教程二),以及雷達圖和極地區域圖(教程三)。 創建餅圖和環形圖 餅圖和環形圖非常適合展示某個整體被劃分為不同部分的比例。例如,可以使用餅圖展示野生動物園中雄獅、雌獅和幼獅的百分比,或不同候選人在選舉中獲得的投票百分比。 餅圖僅適用於比較單個參數或數據集。需要注意的是,餅圖無法繪製值為零的實體,因為餅圖中扇形的角度取決於數據點的數值大小。這意味著任何占比為零的實體

掌握了入門級TypeScript教程後,您應該能夠在支持TypeScript的IDE中編寫自己的代碼,並將其編譯成JavaScript。本教程將深入探討TypeScript中各種數據類型。 JavaScript擁有七種數據類型:Null、Undefined、Boolean、Number、String、Symbol(ES6引入)和Object。 TypeScript在此基礎上定義了更多類型,本教程將詳細介紹所有這些類型。 Null數據類型 與JavaScript一樣,TypeScript中的null
