Skip to content

Commit 9f341a8

Browse files
committed
Stopped ion-spinner Android animation script from running indefinitely.
1 parent 500cf94 commit 9f341a8

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

Diff for: js/angular/controller/spinnerController.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,19 @@
330330
var animations = {
331331

332332
android: function(ele) {
333+
var self = this;
334+
335+
this.stop = false;
336+
333337
var rIndex = 0;
334338
var rotateCircle = 0;
335339
var startTime;
336340
var svgEle = ele.querySelector('g');
337341
var circleEle = ele.querySelector('circle');
338342

339343
function run() {
344+
if (self.stop) return;
345+
340346
var v = easeInOutCubic(Date.now() - startTime, 650);
341347
var scaleX = 1;
342348
var translateX = 0;
@@ -372,6 +378,7 @@
372378
return function() {
373379
startTime = Date.now();
374380
run();
381+
return self;
375382
};
376383

377384
}
@@ -392,7 +399,7 @@
392399
'$attrs',
393400
'$ionicConfig',
394401
function($element, $attrs, $ionicConfig) {
395-
var spinnerName;
402+
var spinnerName, anim;
396403

397404
this.init = function() {
398405
spinnerName = $attrs.icon || $ionicConfig.spinner.icon();
@@ -415,7 +422,11 @@
415422
};
416423

417424
this.start = function() {
418-
animations[spinnerName] && animations[spinnerName]($element[0])();
425+
animations[spinnerName] && (anim = animations[spinnerName]($element[0])());
426+
};
427+
428+
this.stop = function() {
429+
animations[spinnerName] && (anim.stop = true);
419430
};
420431

421432
}]);

Diff for: js/angular/directive/spinner.js

+5
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,11 @@ IonicModule
188188
link: function($scope, $element, $attrs, ctrl) {
189189
var spinnerName = ctrl.init();
190190
$element.addClass('spinner spinner-' + spinnerName);
191+
192+
$element.on('$destroy', function onDestroy()
193+
{
194+
ctrl.stop();
195+
});
191196
}
192197
};
193198
});

Diff for: js/angular/service/loading.js

+2
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ function($ionicLoadingConfig, $ionicBody, $ionicTemplateLoader, $ionicBackdrop,
183183
}
184184
$timeout.cancel(self.durationTimeout);
185185
self.isShown = false;
186+
var loading = self.element.children();
187+
loading.html("");
186188
};
187189

188190
return self;

0 commit comments

Comments
 (0)