From 35a3357df8188048b9cf8695fb6beffcf6537737 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 6 Apr 2016 10:10:34 -0500 Subject: [PATCH] fix(scroll): correctly resolve when scrolling finishes --- ionic/util/scroll-view.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ionic/util/scroll-view.ts b/ionic/util/scroll-view.ts index 57355307f1..fbb213f0db 100644 --- a/ionic/util/scroll-view.ts +++ b/ionic/util/scroll-view.ts @@ -56,11 +56,16 @@ export class ScrollView { return new Promise(resolve => { let startTime: number; + let attempts = 0; // scroll loop function step() { - if (!self._el || !self.isPlaying) { - return resolve(); + attempts++; + + if (!self._el || !self.isPlaying || attempts > 200) { + self.isPlaying = false; + resolve(); + return; } let time = Math.min(1, ((Date.now() - startTime) / duration)); @@ -74,10 +79,10 @@ export class ScrollView { } if (fromX != x) { - self._el.scrollLeft = Math.round((easedT * (x - fromX)) + fromX); + self._el.scrollLeft = Math.floor((easedT * (x - fromX)) + fromX); } - if (time < 1 && self.isPlaying) { + if (easedT < 1) { raf(step); } else {