如何在視圖之間切換時保留頁面狀態以及在控制器之間共享的服務上緩存請求?
我有兩個觀點:
$routeProvider.when('/', {templateUrl: 'views/art.html'});
$routeProvider.when('/bio', {templateUrl: 'views/bio.html'});
art.html
有一個控制器現在Filters
.controller('Filters', ['$scope','Imgur', function($scope, Imgur) {
$scope.$on('updateAlbumsList', function(e) {
$scope.albumsList = Imgur.returnAlbumsList();
});
$scope.filterAlbum = function(id) {
Imgur.filterAlbum(id);
};
$scope.init = function() {
Imgur.getAlbumsList(function(){
//A hack to preserve page state
Imgur.loadFilters();
});
};
$scope.init();
}])
Here is a plunker with full source.
很明顯,我可以對服務對象進行處理,比如應用過濾器,這些過濾器可以改變現有的屬性,添加新的屬性,甚至爲每個請求添加新的對象。
但是當我切換到bio.html
並返回到art.html
會發生什麼?請求會再次發送並重新呈現整個頁面!我明白這是因爲這個對象被init()
重新實例化。
如何在視圖之間切換時保留頁面狀態?
如何對其他控制器共享的相同服務調用使用緩存請求?