在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5/ angular2 返回上一頁怎么保留上一頁的數(shù)據(jù)?

angular2 返回上一頁怎么保留上一頁的數(shù)據(jù)?

我現(xiàn)在有一個頁面(比如列表頁面)
然后點擊其中的一條進入下一個頁面(比如詳情頁面,是一個新的頁面),然后返回上一頁(也就是列表頁面)。
這時候會刷新列表頁面,呈現(xiàn)的頁面又是第一次進入該頁的效果,我剛請求的那些數(shù)據(jù)沒了,又得重新請求,如果用戶請求了很多,頁面很長,返回到這頁時都沒了,用戶體驗太差了。
如何做到返回到前一頁時保留上一次從該頁跳轉(zhuǎn)到其他頁面時該頁的狀態(tài)?
我現(xiàn)在是這樣做的:查詢這個列表之后用localStorage保留數(shù)據(jù),把當前的頁數(shù)帶到詳情里面,然后加一個返回按鈕,再把頁數(shù)帶來,如果有頁數(shù)就把localStorage存的數(shù)據(jù)取出,如果沒有就刪除存的數(shù)據(jù)。還有沒有更好的答案??我想的是不需要加返回按鈕,直接點瀏覽器的返回,就能回到上一頁的狀態(tài),各位大佬能有更好的解決方案嗎?

回答
編輯回答
神曲

你可以創(chuàng)建一個service, 因為你這個功能就是做stickness嘛, 所以可以叫SticknessService,
在component注入這個service, ngOnInit()的時候去根據(jù)對應的標識讀取對應的數(shù)據(jù)。
因為angular service是單例模式的,所以一旦初始化后,這個service就會在了。

用localStorage也是可以做得,類似的原理。 localStorage更適用于在angular中打開的多個tab的情況下。
所以你這種情況使用service就可以了。

還有一種就是使用Router來做,但這個適用于參數(shù)不是特別多,而且很簡單,比如數(shù)字,字符串等。
如果你需要存數(shù)組,或者對象,還是推薦使用service。
在component中可以注入router,在ngOnInit的時候監(jiān)聽router的params事件

    this.router.params.subscribe((parmas: any) => {
           //.....
    }
2017年4月28日 16:06
編輯回答
祈歡

可以把查詢參數(shù)附加在url上,也就是你的列表頁搜索的form表單用get方式請求;
如果列表頁是ajax請求的,也可以用#附加在url上,然后加點js獲取location.hash即可獲取參數(shù)。

2017年12月6日 07:32
編輯回答
老梗

我用的是angular2 單頁面應用

2017年8月17日 08:12
編輯回答
舊顏

考慮下Angular的RouteReuseStrategy路由復用策略

2017年9月2日 18:30