這次帶給大家Vue實作不刷新分頁,Vue實作不刷新分頁的注意事項有哪些,下面就是實戰案例,一起來看一下。
之前一直想要自己試著實現一個分頁器,但一直拖,今天寫完,大概是照著網易雲音樂的樣子來完成。這個小例子很簡單,透過這個小例子,可以學習到Vue計算屬性的使用,並了解寫分頁器需要區分的情況。這篇文章會慢慢從頭來實現這個小例子,相信你一定會學會,而且看完了我的思路之後說不定會有更棒的思路和想法!
實現的效果是這樣子的:
#一、先簡單佈局
<template> <p> </p> <ul> <li><span></span></li> <li> <span>{{item}}</span> </li> <li><span></span></li> </ul> </template> <script> export default { computed: { pages() { return 10; } } }; </script>
效果如下:
有兩個地方說下:
最前面、最後面兩個icon用的font awesome的cdn
使用v-for來進行渲染的資料用的是計算屬性裡的pages,暫時寫了一個資料11,所以渲染出了11個標籤
二、理清思路,在這個例子裡最重要
這篇文章的例子是參考了網易雲音樂裡的分頁方法,網易的圖:
它有幾個特點:
首頁和尾頁一直都有
最多時候有11個標籤頁,包含兩個... ,但是它們不能點擊,所以我也把例子裡的頁碼設為11
在目前頁變動的時候,頁碼的形式也會發生變化,總共有三種情況,這個下面會細說
分頁的三種情況:
第一種:目前頁碼小於等於5的時候
如圖:
#這種情況首頁尾頁保留,倒數第二個頁面為..., 頁碼從頭往後算
第二種情況:目前頁碼處於最後5個的時候
如圖:
#首頁和尾頁仍然保留,第二個頁碼為...,頁碼從最後向前算 #如圖:
首頁和尾頁都保留,第二個頁碼和倒數第二個頁碼都為... ,同時頁面從當前頁碼位置向兩側算
三、用程式碼來實現上面的三種情況
從上面的想法來看,頁碼具體如何呈現由目前頁碼的位置決定,所以我們要在data裡設定一個currentPage:1,而計算屬性裡用來渲染頁碼的pages透過currentPage來控制,同時還需要一個總頁數totalPages:50。
先寫第一種情況:
<script> export default { data() { return { currentPage: 1, totalPages: 50 } }, computed: { pages() { const c = this.currentPage const t = this.totalPages if (c <= 5) { return [1, 2, 3, 4, 5, 6, 7, 8, 9, '...', t] } } } }; </script>
效果如下:
#############寫第二種情況,再加個if:# ##<script> export default { data() { return { currentPage: 47, totalPages: 50 } }, computed: { pages() { const c = this.currentPage const t = this.totalPages if (c <= 5) { return [1, 2, 3, 4, 5, 6, 7, 8, 9, '...', t] } else if (c >= t - 4) { return [1, '...', t-8, t-7, t-6, t-5, t-4, t-3, t-2, t-1, t] } } } }; </script>###把currentPage的值設為>= 46,效果如下:###############把第三種情況加上:###
computed: { pages() { const c = this.currentPage const t = this.totalPages if (c = t - 4) { return [1, '...', t-8, t-7, t-6, t-5, t-4, t-3, t-2, t-1, t] //第二种情况 } else { return [1, '...', c-3, c-2, c-1, c, c+1, c+2, c+3, '...', t] //第三种情况 } } }###基本就是這樣,已經可以透過改變currentPage的值來查看分頁器的變化了。 ###
接下来实现点击相应的页码来改变currentPage的值,只要写一个点击事件再写一个函数就好了。
效果如下:
为了让当前页码更清楚,再在页面上加上当前多少页
<p>当前第{{currentPage}}页</p>
效果如下:
发现了一bug,就是我们每次点击的时候,都是将item的具体内容传递过去改变currentIPage的,但是当我们点的 ... 的时候就把它也传递过去了,但是它不是我们要的页码的数据,在计算的时候就出错了,所以我们需要做一点处理。同时,还有再点击当前页码的时候也不必再执行select函数了。
简单改写一下select函数:
select(n) { if (n === this.currentPage) return if (typeof n === 'string') return this.currentPage = n }
这样就正常了。
再把两侧icon向前一页和向后一页的功能加上,因为一个是加1一个是减1,所以写一个函数传递不同的参数就行了。
效果如下:
呃,边界问题,当currentPage为1时就不能再减了,当它为最大时也不能再加了。
改写一下代码:
prevOrNext (n) { this.currentPage += n this.currentPage this.totalPages ? this.currentPage = this.totalPages : null }
这下就可以了,如图:
四、 结语
写到这里,这个分页器基本功能就写完了,当然,我们还可以继续封装,在每次改变currentPage的时候用this.$emit通知外面实现通信,还可以通过props来向内传递数据,比如传递totalPages等,这些都是可以继续完善的内容。最重要的一点,关于分页器的具体计算方法,我用的是最笨的方法,所以同志们要是知道更好的办法记得留言啊~
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是Vue實作不刷新分頁的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

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

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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