angular做單頁面應用是一個比較好的框架,但是它有一定的入門難度,對於新手來說可能會碰到很多坑,也有許多難題,大部分仔細看文檔,找社區是能解決的。 但有些問題也許資料比較少,最近遇到過一個要緩存父頁面的問題,就是點擊進入子頁後,再返回時父頁面的數據要緩存下來,包括滾動條的位置。再做的過程當中查過 ...
angular做單頁面應用是一個比較好的框架,但是它有一定的入門難度,對於新手來說可能會碰到很多坑,也有許多難題,大部分仔細看文檔,找社區是能解決的。
但有些問題也許資料比較少,最近遇到過一個要緩存父頁面的問題,就是點擊進入子頁後,再返回時父頁面的數據要緩存下來,包括滾動條的位置。再做的過程當中查過
許多資料,都說的不很詳細,今天把方法記錄下來,供參考。
要想緩存,要用到嵌套路由(ui-router):
有三個嵌套的方法:
- 使用“點標記法”,例如:
.state('contacts.list', {})
- 使用
parent
屬性,指定一個父狀態的名稱字元串,例如:parent: 'contacts'
- 使用
parent
屬性,指定一個父狀態對象,例如:parent: contacts
(contacts 是一個狀態對象
嵌套路由如有不明白的,大家可以自己去google下。
1.在路由中配置好後,在父頁面中設置一個子view.
路由配置:
$stateProvider .state('parent', {}) .state('parent.sub',{ url: '/flightStatus/:time', views:{ 'subView':{ templateUrl: 'sub.html', controller: '' } } } );
2.配置好後,在父頁面添加view和名字(如果只有一個ui-view,名字可以不要)
parent.html <ui-view name="subView"></ui-view> <!--其它html代碼-->
……
3.這時由父頁面進去後,子頁面sub.html會載入到name為subView中
在子頁面中返回時,用angular的$window.history.back();
註意:這裡返回時父頁面的controller將不在執行
進行以上配置後就可以緩存到父頁面的數據了,返回時不會刷新,在進入子頁面時大家最好把父頁面隱藏(不隱藏是把內容高度設為100%),返回時再顯示,這樣避免子父頁面都有輸入框下,按下tab時會把父頁面顯示的bug