diff --git a/js/ext/angular/src/controller/ionicScrollController.js b/js/ext/angular/src/controller/ionicScrollController.js index 59aa59c481..928e334cf4 100644 --- a/js/ext/angular/src/controller/ionicScrollController.js +++ b/js/ext/angular/src/controller/ionicScrollController.js @@ -10,8 +10,9 @@ angular.module('ionic.ui.scroll') scrollViewOptions.bouncing : !ionic.Platform.isAndroid(); + var self = this; + var element = this.element = scrollViewOptions.el; - var refresher = this.refresher = element.querySelector('.scroll-refresher'); var scrollView = this.scrollView = new ionic.views.Scroll(scrollViewOptions); this.$element = angular.element(element); @@ -23,16 +24,18 @@ angular.module('ionic.ui.scroll') $timeout(function() { scrollView.run(); + self.refresher = element.querySelector('.scroll-refresher'); + // Activate pull-to-refresh - if(refresher) { - var refresherHeight = refresher.clientHeight || 0; + if(self.refresher) { + var refresherHeight = self.refresher.clientHeight || 0; scrollView.activatePullToRefresh(refresherHeight, function() { - refresher.classList.add('active'); + self.refresher.classList.add('active'); }, function() { - refresher.classList.remove('refreshing'); - refresher.classList.remove('active'); + self.refresher.classList.remove('refreshing'); + self.refresher.classList.remove('active'); }, function() { - refresher.classList.add('refreshing'); + self.refresher.classList.add('refreshing'); $scope.onRefresh && $scope.onRefresh(); $scope.$parent.$broadcast('scroll.onRefresh'); }); diff --git a/js/ext/angular/test/controller/ionicScrollController.unit.js b/js/ext/angular/test/controller/ionicScrollController.unit.js index 67d42c0bbd..c8c93d030b 100644 --- a/js/ext/angular/test/controller/ionicScrollController.unit.js +++ b/js/ext/angular/test/controller/ionicScrollController.unit.js @@ -43,12 +43,21 @@ describe('$ionicScroll Controller', function() { it('should not setup if no child .scroll-refresher', function() { setup(); + timeout.flush(); expect(ctrl.refresher).toBeFalsy(); spyOn(ctrl.scrollView, 'activatePullToRefresh'); - timeout.flush(); expect(ctrl.scrollView.activatePullToRefresh).not.toHaveBeenCalled(); }); + it('should not setup ctrl.refresher until after timeout', function() { + setup({ + el: angular.element('