diff --git a/js/angular/controller/scrollController.js b/js/angular/controller/scrollController.js index aa5e69f33c..1f86c06680 100644 --- a/js/angular/controller/scrollController.js +++ b/js/angular/controller/scrollController.js @@ -58,8 +58,7 @@ function($scope, } var resize = angular.bind(scrollView, scrollView.resize); - ionic.on('resize', resize, $window); - + angular.element($window).on('resize', resize); var scrollFunc = function(e) { var detail = (e.originalEvent || e).detail || {}; @@ -75,8 +74,7 @@ function($scope, $scope.$on('$destroy', function() { deregisterInstance(); scrollView && scrollView.__cleanup && scrollView.__cleanup(); - ionic.off('resize', resize, $window); - $window.removeEventListener('resize', resize); + angular.element($window).off('resize', resize); $element.off('scroll', scrollFunc); scrollView = self.scrollView = scrollViewOptions = self._scrollViewOptions = scrollViewOptions.el = self._scrollViewOptions.el = $element = self.$element = element = null; }); diff --git a/js/angular/controller/sideMenuController.js b/js/angular/controller/sideMenuController.js index 139a714f7a..bb4025dd72 100644 --- a/js/angular/controller/sideMenuController.js +++ b/js/angular/controller/sideMenuController.js @@ -292,10 +292,7 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io self.exposeAside = function(shouldExposeAside) { if (!(self.left && self.left.isEnabled) && !(self.right && self.right.isEnabled)) return; self.close(); - //Trigger a resize if it changed - if (isAsideExposed !== shouldExposeAside) { - ionic.trigger('resize', null, window); - } + isAsideExposed = shouldExposeAside; if (self.left && self.left.isEnabled) { // set the left marget width if it should be exposed diff --git a/js/angular/directive/collectionRepeat.js b/js/angular/directive/collectionRepeat.js index 69e9d5415a..14452415f7 100644 --- a/js/angular/directive/collectionRepeat.js +++ b/js/angular/directive/collectionRepeat.js @@ -140,11 +140,9 @@ function CollectionRepeatDirective($ionicCollectionManager, $parse, $window, $$r initDimensions(); - var debouncedRefreshDimensions = ionic.animationFrameThrottle(refreshDimensions); - var debouncedOnResize = ionic.animationFrameThrottle(validateResize); - // Dimensions are refreshed on resize or data change. - angular.element($window).on('resize', debouncedOnResize); + angular.element($window).on('resize', validateResize); + var unlistenToExposeAside = $rootScope.$on('$ionicExposeAside', validateResize); $timeout(refreshDimensions, 0, false); scope.$watchCollection(listGetter, function(newValue) { @@ -162,7 +160,8 @@ function CollectionRepeatDirective($ionicCollectionManager, $parse, $window, $$r }); scope.$on('$destroy', function() { - angular.element($window).off('resize', debouncedOnResize); + angular.element($window).off('resize', validateResize); + unlistenToExposeAside(); computedStyleNode && computedStyleNode.parentNode && computedStyleNode.parentNode.removeChild(computedStyleNode); diff --git a/js/angular/directive/sideMenuContent.js b/js/angular/directive/sideMenuContent.js index 0db992fa43..ca4127be6c 100644 --- a/js/angular/directive/sideMenuContent.js +++ b/js/angular/directive/sideMenuContent.js @@ -154,7 +154,6 @@ function($timeout, $ionicGesture, $window) { $element[0].style.width = ''; content.offsetX = 0; } - ionic.trigger('resize', null, window); }), setMarginRight: ionic.animationFrameThrottle(function(amount) { if (amount) { diff --git a/test/html/collection-repeat/side-menu-exposed.html b/test/html/collection-repeat/side-menu-exposed.html new file mode 100644 index 0000000000..94f5222652 --- /dev/null +++ b/test/html/collection-repeat/side-menu-exposed.html @@ -0,0 +1,59 @@ + + + + + + + Sample UL + + + + + + + + + + + +

Change screen to large and back

+
+ +

WHATS UP

+ + +

{{item.text}}

+
+
+

Stuff after list

+
Hello
+
+
+ + + Hello + + +
+ + + + diff --git a/test/unit/angular/controller/scrollController.unit.js b/test/unit/angular/controller/scrollController.unit.js index fd8c7b5496..84962fbd24 100644 --- a/test/unit/angular/controller/scrollController.unit.js +++ b/test/unit/angular/controller/scrollController.unit.js @@ -95,16 +95,6 @@ describe('$ionicScroll Controller', function() { expect(ctrl.scrollView.run).toHaveBeenCalled(); }); - - it('should unbind window event listener on scope destroy', inject(function($window) { - spyOn(ionic, 'on'); - spyOn(ionic, 'off'); - setup(); - expect(ionic.on).toHaveBeenCalledWith('resize', jasmine.any(Function), $window); - scope.$destroy(); - expect(ionic.off).toHaveBeenCalledWith('resize', jasmine.any(Function), $window); - })); - it('should listen to scroll event and call $onScroll', function() { setup(); scope.$onScroll = jasmine.createSpy();