Skip to content

Commit 978e442

Browse files
committed
fix(ionicScrollDelegate): do not error if no scrollTop/Left values
Closes #659
1 parent fb87256 commit 978e442

File tree

2 files changed

+25
-20
lines changed

2 files changed

+25
-20
lines changed

js/ext/angular/src/service/delegates/ionicScrollDelegate.js

+4-19
Original file line numberDiff line numberDiff line change
@@ -73,31 +73,16 @@ angular.module('ionic.ui.service.scrollDelegate', [])
7373
});
7474
}
7575

76-
$element.bind('scroll', function(e) {
77-
78-
var elem;
79-
76+
$element.on('scroll', function(e) {
8077
if ( !$scope.onScroll ) {
8178
return;
8279
}
83-
84-
elem = {
85-
scrollTop: 0,
86-
scrollLeft: 0
87-
};
88-
89-
if ( e.detail && e.detail.scrollTop && e.detail.scrollLeft ) {
90-
elem = e.detail;
91-
} else {
92-
if ( e.originalEvent && e.originalEvent.detail && e.originalEvent.detail.scrollTop && e.originalEvent.detail.scrollLeft ) {
93-
elem = e.originalEvent.detail;
94-
}
95-
}
80+
var detail = (e.originalEvent || e).detail || {};
9681

9782
$scope.onScroll && $scope.onScroll({
9883
event: e,
99-
scrollTop: elem.scrollTop,
100-
scrollLeft: elem.scrollLeft
84+
scrollTop: detail.scrollTop || 0,
85+
scrollLeft: detail.scrollLeft || 0
10186
});
10287

10388
});

js/ext/angular/test/service/delegates/ionicScrollDelegate.unit.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
describe('Ionic ScrollDelegate Service', function() {
1+
ddescribe('Ionic ScrollDelegate Service', function() {
22
var del, rootScope, compile, timeout, document;
33

44
beforeEach(module('ionic'));
@@ -31,6 +31,26 @@ describe('Ionic ScrollDelegate Service', function() {
3131
expect(sv.resize).toHaveBeenCalled();
3232
});
3333

34+
it('scroll event', function() {
35+
var scope = rootScope.$new();
36+
var el = compile('<ion-content></ion-content>')(scope);
37+
scope = el.isolateScope();
38+
scope.$apply();
39+
var top, left;
40+
scope.onScroll = jasmine.createSpy('scroll').andCallFake(function(data) {
41+
top = data.scrollTop;
42+
left = data.scrollLeft;
43+
});
44+
ionic.trigger('scroll', {target: el[0]});
45+
expect(scope.onScroll).toHaveBeenCalled();
46+
expect(top).toBe(0);
47+
expect(left).toBe(0);
48+
49+
ionic.trigger('scroll', {target: el[0], scrollTop: 3, scrollLeft: 4});
50+
expect(top).toBe(3);
51+
expect(left).toBe(4);
52+
});
53+
3454
testWithAnimate(true);
3555
testWithAnimate(false);
3656
function testWithAnimate(animate) {

0 commit comments

Comments
 (0)