diff --git a/js/angular/controller/scrollController.js b/js/angular/controller/scrollController.js index 3c128e4e1b1..ed87735b7dd 100644 --- a/js/angular/controller/scrollController.js +++ b/js/angular/controller/scrollController.js @@ -76,15 +76,17 @@ function($scope, scrollViewOptions, $timeout, $window, $$scrollValueCache, $loca var viewId = historyData && historyData.viewId; if (viewId) { - self.rememberScrollPosition(viewId); - self.scrollToRememberedPosition(); - - backListenDone = $rootScope.$on('$viewHistory.viewBack', function(e, fromViewId, toViewId) { - //When going back from this view, forget its saved scroll position - if (viewId === fromViewId) { - self.forgetScrollPosition(); - } - }); + $timeout(function() { + self.rememberScrollPosition(viewId); + self.scrollToRememberedPosition(); + + backListenDone = $rootScope.$on('$viewHistory.viewBack', function(e, fromViewId, toViewId) { + //When going back from this view, forget its saved scroll position + if (viewId === fromViewId) { + self.forgetScrollPosition(); + } + }); + }, 1, false); } }); diff --git a/test/unit/angular/controller/scrollController.unit.js b/test/unit/angular/controller/scrollController.unit.js index 3b21a9ff0cd..17a6f537f62 100644 --- a/test/unit/angular/controller/scrollController.unit.js +++ b/test/unit/angular/controller/scrollController.unit.js @@ -124,11 +124,12 @@ describe('$ionicScroll Controller', function() { expect(ctrl.scrollToRememberedPosition).toHaveBeenCalled(); }); - it('should forget on $viewHistory.viewBack after $viewContentLoaded', inject(function($rootScope) { + it('should forget on $viewHistory.viewBack after $viewContentLoaded', inject(function($rootScope, $timeout) { var historyData = { viewId: 'foo' }; setup(); spyOn($rootScope, '$on').andCallThrough();; scope.$broadcast('$viewContentLoaded', historyData); + $timeout.flush(); expect(scope.$on).toHaveBeenCalledWith('$viewHistory.viewBack', jasmine.any(Function)); //Should not forget unless backViewId is the same