亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

MVVM框架下實現分頁功能示例

2019-11-19 13:39:09
字體:
來源:轉載
供稿:網友

分頁這種組件,幾乎每一種框架都有這樣的組件,近期我們做了新的項目,因為是在新的分支和新的項目中開發的一期任務,屬于什么都沒有的狀態,幾乎所有的效果和業務邏輯都需要重新整理和書寫,項目正好完結了,把其中用到的一些小方法分想出來,重在分享思路和邏輯,理清思路和邏輯不論是哪一種框架,都可以輕松搞定

先來看一下效果圖:

分頁效果圖

場景概述:

當前頁面需要加載 10條數據 ,每次點擊下一頁如果之前沒有請求過接口需要請求數據,如果在一次頁面會話中, 請求過的數據不再從新請求,且要保留每一頁面的操作結果 (比如在頁面中對數據做的一些操作:點擊事情等),且不知道一共有多少數據。

思考邏輯拆分

1.頁面初次加載出數據的時候,需要對視圖層和分頁功能做初始化,如果第一次加載的數據不足 10條 ,證明沒有后續頁面,所以也就不用顯示分頁功能,如果等于10條則證明有下一頁。

初始化只有1頁

2.考慮頁面列表顯示幾個:此處設定為 5個 ,且這個列表要隨著點擊上一頁,下一頁而動態更新

頁面變化的列表有5條數據

3.需要一個 currentPage 作為索引來顯示當前所在頁面的下標,以及依靠索引做操作,同時還要記錄一個總的頁面數據列表 pageList ,還需要一個可以動態更新的顯示列表,就是當前看到的5個列表數據 newPages

3.頁面數量隨著請求不斷增加,需要把這些頁面中的視圖層顯示數據存儲起來,用于顯示和記錄數據 Objectives

4.已經請求過得數據不需要每次都請求,如果在當前的頁面列表中移動, 不需要動態更新 頁面列表,只需要改變currentPage和對應的當前頁面數據

在當前的列表中移動

5.點擊上一頁的時候需要對當前5個頁面列表更新,不需要從新請求數據因為都已經請求過,還要考慮第四點

6.點擊下一頁的時候,如果沒有請求過,也就是下一頁的下標, 大于總的數據長度 的時候需要從新請求數據,請求下來后需要對整個頁面列表數據(存儲的所有頁面數據,所有的頁面個數列表,當前要顯示的5個列表)做 整體的更新 。如果下一頁小于等于總的數據長度,則只需要當前5個頁面列表更新,和此頁的對應數據,還要考慮第四點情況

DOM結構書寫

以上的思路理清楚之后,就可以開始動手寫代碼了,先來書寫DOM結構吧。

DOM結構

來講講這段代碼的意思吧,我們用屬性currentPage的值來控制當前這些元素的顯示與否。用newPages的長度來控制頁面動態顯示的列表。同時用了2個方法來進行操作,changPage這個方法用來改變當前頁面的視圖層顯示數據,arrowPage 方法用了進行上一頁和下一頁的操作,方法相同,參數不同。再看一下每一項中都有一個data屬性用了存儲一個page的值,這個值是用來設置currentPage和顯示頁面數據用的。

方法實現

現在思路清晰,頁面所涉及的方法也理清了,開始來寫方法吧!

a.初始定義屬性默認值

定義默認值

b.首次加載頁面初始化

初始化數據

如果首次請求的數據小于10條,則默認的currentPage還是0,也不需要顯示分頁功能。如果符合條件,則需要初始化currentPage為1,同時需要執行一個構造分頁列表的方法buildPageList

首次要實現的功能

PageList用來存儲所有的頁面列表,同時用來更新顯示的5個頁面,所以需要構造當前的5個頁面按鈕,所以需要方法currentPages

如果pageList小于5個時候則newPages與它相同,不需要做其他處理。下面的情況一會再講

即這種情況

c.點擊上一頁和下一頁操作

操作方法

根據arrowDirection的值來判斷是進行上一頁還是下一頁的操作。每次點擊的時候先更新currentPage的值(data-屬性存儲的)

1.下一頁的操作

如果當前currenPage在當前的頁面列表中,點擊下一頁只需要更換當前的pageData即可

當前是4,下一頁在列表中

如果下一頁不在當前列表中,但是小于pageList的長度,則需要變更當前顯示的5個page列表,和更換當前的pageData,這個時候回到之前的currentPages方法中來變更當前的newPages。

如果下一頁不在當前列表中,并且大于pageList的長度。則請求新的數據,變更列表

請求數據變更數據

2.上一頁的操作

因為“上一頁“數據均屬于已經存在的狀態,所以不涉及請求,只會設計變更列表和頁面數據。開頭的思路中已經說明

d.點擊類別頁面的方法changePage

變更數據即可

不足之處的思考

方法已經書寫完畢了,思考一圈之后肯定能發現有很多不足之處吧,是的的確存在一些不足之處。

1.不應該靠currentPage這個屬性來控制這么多的DOM元素的顯示

2.因為是一次一次的請求數據,不能知道一共有多少數據和記錄尾頁,只能開最后一次請求時發現沒有數據,給出提示,最好的方式應該是在請求最后一次之前能知道下一次沒有數據。

3.有一些地方用了固定的數字來做處理,這樣日后如果產品要改成顯示10個頁的列表呢?就得挨個改數字,所以最好用一個熟悉值來控制

對?。。]有給出完整的實例和代碼。是的,寫出來分享思路和基本方法,目的就是希望看到的人能和我交流思路和方法,給出更好的建議,而不是用來讓別人復制粘貼的,這樣毫無意義。

思考與總結

到這里所有的思路和方法都已經結合的講解完畢,基本的代碼也都分析全面,基于上面的方法和思想,來寫一個適合你們項目框架的分頁功能吧,最好能把它封裝成一個組件,但是如果由于接口給的數據方式不同或者需求不同,功能實現起來可能會大相徑庭,但是基本的思路和方法可以學習。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久久久人体| 日韩高清电影免费观看完整版| 国产精品久久久久久超碰| 欧美激情一级二级| 国产成人自拍视频在线观看| 日韩一区在线视频| 国产女人18毛片水18精品| 国产免费一区二区三区在线观看| 欧美超级免费视 在线| 亚洲第一视频网| 久久精品成人动漫| 国产精品mp4| 97精品国产97久久久久久免费| 亚洲国产女人aaa毛片在线| 亚洲视频自拍偷拍| 久久精品人人爽| 日韩欧美国产黄色| 国产精品香蕉在线观看| 日韩精品在线观看视频| 亚洲欧美日韩中文在线制服| 久久久精品国产网站| 久久人91精品久久久久久不卡| 国产成人综合一区二区三区| 2019亚洲男人天堂| 亚洲男人第一av网站| 精品偷拍各种wc美女嘘嘘| 九九久久国产精品| 亚洲天堂日韩电影| 久久久视频精品| 国产精品女主播视频| 国产成人97精品免费看片| 亚洲欧美第一页| 一区二区av在线| 欧美成人一区二区三区电影| 91在线国产电影| 91视频-88av| 亚洲色图欧美制服丝袜另类第一页| 国产精品18久久久久久麻辣| 在线观看亚洲视频| 国产精品自拍偷拍视频| 78色国产精品| 国产精品69精品一区二区三区| 欧美有码在线视频| 国产欧美一区二区三区在线| 亚洲综合av影视| 在线播放日韩av| 欧美激情欧美狂野欧美精品| 国产成人精品av在线| 亚洲国内高清视频| 精品自拍视频在线观看| 成人黄色中文字幕| 亚洲欧美在线免费观看| 欧美性xxxx在线播放| 欧美老少做受xxxx高潮| 性色av一区二区三区在线观看| 久久精品中文字幕一区| 668精品在线视频| 欧美午夜女人视频在线| 一区二区中文字幕| 欧美一区三区三区高中清蜜桃| 欧美日本中文字幕| 91精品国产高清久久久久久久久| 国产精品高潮呻吟久久av黑人| 日韩av电影在线播放| 欧美理论片在线观看| 91亚洲人电影| 欧美日韩加勒比精品一区| 色婷婷综合久久久久中文字幕1| 一本一道久久a久久精品逆3p| 成人羞羞国产免费| 中文字幕亚洲无线码在线一区| 成人中文字幕+乱码+中文字幕| 亚洲人a成www在线影院| 国产精品成久久久久三级| 国产精品高清免费在线观看| 国产亚洲欧美aaaa| 亚洲护士老师的毛茸茸最新章节| 97av在线视频| 久久九九国产精品怡红院| 欧美亚洲在线播放| 久久综合久久八八| 国产成人精品999| 日韩欧美国产免费播放| 国产成人免费av| 日韩在线资源网| 精品一区二区亚洲| 狠狠操狠狠色综合网| 欧美午夜视频一区二区| 国产精品一区=区| 欧美激情在线播放| 欧美裸体男粗大视频在线观看| 亚洲欧洲在线视频| 91免费福利视频| 色偷偷av一区二区三区乱| 茄子视频成人在线| 色综合伊人色综合网站| 国产亚洲欧美日韩精品| 国产精品一区二区性色av| 精品国内亚洲在观看18黄| 97成人精品视频在线观看| 国产免费一区二区三区在线观看| 欧美在线视频网| 在线观看亚洲区| 最近2019中文字幕一页二页| www.美女亚洲精品| 欧美日韩国产中文精品字幕自在自线| 青青草原一区二区| 久久亚洲精品毛片| 中文字幕日韩精品有码视频| 少妇高潮久久久久久潘金莲| 成人有码在线播放| 亚洲人成在线观| 国产aⅴ夜夜欢一区二区三区| 亚洲成人aaa| 欧美又大粗又爽又黄大片视频| 国产精品一区二区久久久| 中文字幕久久久| 亚洲三级免费看| 国产噜噜噜噜久久久久久久久| 国产精品444| 久久久爽爽爽美女图片| 欧美中文字幕在线观看| 欧美性猛交xxxx免费看漫画| 亚洲欧洲成视频免费观看| 亚洲aⅴ男人的天堂在线观看| 在线丨暗呦小u女国产精品| 九色精品美女在线| 国产欧美精品一区二区| 精品国产一区二区三区久久| 69久久夜色精品国产69| 午夜精品久久久久久久久久久久| 精品久久久一区二区| 中文字幕无线精品亚洲乱码一区| 少妇av一区二区三区| 亚洲在线观看视频网站| 亚洲欧美日韩爽爽影院| 自拍亚洲一区欧美另类| 亚洲女人初尝黑人巨大| 78m国产成人精品视频| 日韩欧美综合在线视频| 日韩精品在线电影| 久久艹在线视频| 色噜噜狠狠狠综合曰曰曰88av| 欧美体内谢she精2性欧美| 亚洲女同精品视频| 国产成人精品一区二区在线| 亚洲天堂av在线免费观看| 日韩有码在线播放| 国产精品私拍pans大尺度在线| 91视频九色网站| 欧美激情xxxx性bbbb| 国产精品成人一区二区三区吃奶| 中文字幕不卡av| 久久亚洲国产精品成人av秋霞| 欧美电影在线观看高清| 8x拔播拔播x8国产精品| 国产精品爱久久久久久久| 欧美午夜性色大片在线观看| 日本一本a高清免费不卡| 国产精品中文字幕久久久| 久久影视三级福利片| 精品露脸国产偷人在视频| 成人精品久久一区二区三区| 欧美激情视频一区二区|