富交互Web应用中的撤销和前进
生活随笔
收集整理的這篇文章主要介紹了
富交互Web应用中的撤销和前进
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在web應(yīng)用中,用戶在進(jìn)行一些富交互行為的操作時(shí)難免會(huì)出現(xiàn)誤操作,比如在富文本編輯器設(shè)置錯(cuò)了字體顏色就需要撤回,做H5活動(dòng)頁面的時(shí)候不小心刪了一個(gè)圖片也需要撤回,更比如在線設(shè)計(jì)原型圖應(yīng)用的時(shí)候不小心刪了一個(gè)頁面等,總之在交互場景非常復(fù)雜的情況下,用戶操作失誤的可能性非常大,這時(shí)候‘撤銷’和‘前進(jìn)’這兩個(gè)操作就很有必要了,而且用戶體驗(yàn)也很好
用戶未操作的時(shí)候全局狀態(tài)是A
用戶操作某個(gè)組件使其移動(dòng)到位置X,松開鼠標(biāo)之后全局狀態(tài)是B
用戶操作另一個(gè)組件使其刪除,完成后全局狀態(tài)是C
思路
不管是任何場景下的web應(yīng)用,用戶的每一次操作我們都可以看成是對某個(gè)組件或某個(gè)對象的狀態(tài)和屬性進(jìn)行改變,一旦連續(xù)的動(dòng)作操作完成正準(zhǔn)備進(jìn)行下一個(gè)動(dòng)作之前,此刻的狀態(tài)就是一個(gè)全新的狀態(tài)
A —— B —— C用戶未操作的時(shí)候全局狀態(tài)是A
用戶操作某個(gè)組件使其移動(dòng)到位置X,松開鼠標(biāo)之后全局狀態(tài)是B
用戶操作另一個(gè)組件使其刪除,完成后全局狀態(tài)是C
所以,撤銷的操作就是在用戶操作狀態(tài)到C的時(shí)候讓全局的狀態(tài)回到B,回到上一次操作完的時(shí)候。
那么就需要可以存放這種大量狀態(tài)的列表或索引來記錄每一次操作的動(dòng)作
但如果我用某一個(gè)數(shù)組變量來存儲(chǔ)如此龐大的數(shù)據(jù)是不是略顯不妥?數(shù)據(jù)量越大內(nèi)存應(yīng)該會(huì)爆吧?所以這里我推薦大家使用IndexedDB
下面是利用Angular、Rxjs和IndexedDB封裝好的一個(gè)服務(wù)類
這里我偷懶了一下,直接采用自增的id作為key了,也方便查找
每一次操作所存儲(chǔ)的數(shù)據(jù)如下
最后可以看一下我實(shí)現(xiàn)好了的撤銷和前進(jìn)操作的場景
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的富交互Web应用中的撤销和前进的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一张图告诉你BCH路线分歧的现状
- 下一篇: 使用FastHttpApi构建多人Web