diff --git a/js/ext/angular/src/controller/ionicScrollController.js b/js/ext/angular/src/controller/ionicScrollController.js index f34a9d01b0..7cb3780523 100644 --- a/js/ext/angular/src/controller/ionicScrollController.js +++ b/js/ext/angular/src/controller/ionicScrollController.js @@ -81,17 +81,18 @@ function($scope, scrollViewOptions, $timeout, $window, $$scrollValueCache, $loca if (e.defaultPrevented) { return; } e.preventDefault(); - var viewId = historyData.viewId; + var viewId = historyData && historyData.viewId; + if (viewId) { + self.rememberScrollPosition(viewId); + self.scrollToRememberedPosition(); - 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(); - } - }); + 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() { diff --git a/js/ext/angular/test/controller/ionicScrollController.unit.js b/js/ext/angular/test/controller/ionicScrollController.unit.js index 9f57e95cd8..91b9fff0f0 100644 --- a/js/ext/angular/test/controller/ionicScrollController.unit.js +++ b/js/ext/angular/test/controller/ionicScrollController.unit.js @@ -91,6 +91,17 @@ describe('$ionicScroll Controller', function() { expect(ctrl.scrollView.resize).toHaveBeenCalled(); }); + it('should not remember scroll position on $viewContentLoaded if no viewId', function() { + var historyData = {}; + setup(); + spyOn(ctrl, 'rememberScrollPosition'); + spyOn(ctrl, 'scrollToRememberedPosition'); + scope.$broadcast('$viewContentLoaded', historyData); + timeout.flush(); + expect(ctrl.rememberScrollPosition).not.toHaveBeenCalledWith(); + expect(ctrl.scrollToRememberedPosition).not.toHaveBeenCalled(); + }); + it('should remember scroll position on $viewContentLoaded event', function() { var historyData = { viewId: '1' }; setup();