Skip to content

Commit 979f7b5

Browse files
committed
fix(ionRefresher): be sure to run on-refresh with an angular digest
Closes #1465
1 parent bfce8e2 commit 979f7b5

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

js/angular/directive/refresher.js

+12-10
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
* @ngdoc demo
6262
* @name ionRefresher#withAList
6363
* @module refresherList
64-
* @javascript
64+
* @javascript
6565
* angular.module('refresherList', ['ionic'])
6666
* .controller('RefresherCtrl', function($scope, $timeout) {
6767
* $scope.items = ['Item 1', 'Item 2', 'Item 3'];
@@ -81,19 +81,19 @@
8181
* <ion-header-bar class="bar-positive">
8282
* <h1 class="title">Refresher</h1>
8383
* </ion-header-bar>
84-
*
84+
*
8585
* <ion-content ng-controller="RefresherCtrl">
86-
*
87-
* <ion-refresher on-refresh="doRefresh()"
88-
* pulling-text="Pull to refresh..."
89-
* refreshing-text="Refreshing!"
86+
*
87+
* <ion-refresher on-refresh="doRefresh()"
88+
* pulling-text="Pull to refresh..."
89+
* refreshing-text="Refreshing!"
9090
* refreshing-icon="ion-loading-c">
9191
* </ion-refresher>
92-
*
92+
*
9393
* <ion-list>
9494
* <ion-item ng-repeat="item in items">{{item}}</ion-item>
9595
* </ion-list>
96-
*
96+
*
9797
* </ion-content>
9898
*/
9999
IonicModule
@@ -133,8 +133,10 @@ IonicModule
133133

134134
scrollCtrl._setRefresher($scope, $element[0]);
135135
$scope.$on('scroll.refreshComplete', function() {
136-
$element[0].classList.remove('active');
137-
scrollCtrl.scrollView.finishPullToRefresh();
136+
$scope.$evalAsync(function() {
137+
$element[0].classList.remove('active');
138+
scrollCtrl.scrollView.finishPullToRefresh();
139+
});
138140
});
139141
};
140142
}

test/unit/angular/directive/refresher.unit.js

+3
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ describe('ionRefresher directive', function() {
6262
var ctrl = el.controller('$ionicScroll');
6363
expect(ctrl.scrollView.finishPullToRefresh).not.toHaveBeenCalled();
6464
el.scope().$broadcast('scroll.refreshComplete');
65+
expect(el.hasClass('active')).toBe(true);
66+
expect(ctrl.scrollView.finishPullToRefresh).not.toHaveBeenCalled();
67+
el.scope().$apply();
6568
expect(el.hasClass('active')).toBe(false);
6669
expect(ctrl.scrollView.finishPullToRefresh).toHaveBeenCalled();
6770
});

0 commit comments

Comments
 (0)