這篇文章主要為大家詳細介紹了基於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 })()pagination. css:
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; }index.html:
#
<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>index.js
/** * 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中文網其他相關文章!

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

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