From e12e5bb0b67dbfd89fc031a80ee1190821712fff Mon Sep 17 00:00:00 2001 From: The Big Red Geek Date: Fri, 29 Aug 2014 01:55:40 -0700 Subject: [PATCH 1/4] done --- src/ng/directive/ngSwitch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/directive/ngSwitch.js b/src/ng/directive/ngSwitch.js index f861a2c65ae5..2af248644fe7 100644 --- a/src/ng/directive/ngSwitch.js +++ b/src/ng/directive/ngSwitch.js @@ -156,7 +156,7 @@ var ngSwitchDirective = ['$animate', function($animate) { selectedScopes[i].$destroy(); previousElements[i] = selected; $animate.leave(selected).then(function() { - previousElements.splice(i, 1); + previousElements[i] ? previousElements.splice(i, 1) : angular.noop(); }); } From d36663950253d38863d8b98a012014af2c2ce903 Mon Sep 17 00:00:00 2001 From: The Big Red Geek Date: Fri, 29 Aug 2014 10:06:09 -0700 Subject: [PATCH 2/4] the right way to remove elements and splice from array --- src/ng/directive/ngSwitch.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/ng/directive/ngSwitch.js b/src/ng/directive/ngSwitch.js index 2af248644fe7..2742306b50bc 100644 --- a/src/ng/directive/ngSwitch.js +++ b/src/ng/directive/ngSwitch.js @@ -146,18 +146,15 @@ var ngSwitchDirective = ['$animate', function($animate) { scope.$watch(watchExpr, function ngSwitchWatchAction(value) { var i, ii; - for (i = 0, ii = previousElements.length; i < ii; ++i) { - previousElements[i].remove(); - } - previousElements.length = 0; - for (i = 0, ii = selectedScopes.length; i < ii; ++i) { var selected = getBlockNodes(selectedElements[i].clone); selectedScopes[i].$destroy(); previousElements[i] = selected; - $animate.leave(selected).then(function() { - previousElements[i] ? previousElements.splice(i, 1) : angular.noop(); - }); + $animate.leave(selected).then((function(i) { + return function(){ + previousElements.splice(i, 1).remove(); + }; + }(i)); } selectedElements.length = 0; From fbd8f7e3b8874b5229faf3a7e6b9079a57a4fbcc Mon Sep 17 00:00:00 2001 From: The Big Red Geek Date: Fri, 29 Aug 2014 10:08:28 -0700 Subject: [PATCH 3/4] oops! --- src/ng/directive/ngSwitch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/directive/ngSwitch.js b/src/ng/directive/ngSwitch.js index 2742306b50bc..9df32c1d2476 100644 --- a/src/ng/directive/ngSwitch.js +++ b/src/ng/directive/ngSwitch.js @@ -154,7 +154,7 @@ var ngSwitchDirective = ['$animate', function($animate) { return function(){ previousElements.splice(i, 1).remove(); }; - }(i)); + }(i))); } selectedElements.length = 0; From 99c17ca26c861d1bc32e9073fdf418edb600f1be Mon Sep 17 00:00:00 2001 From: The Big Red Geek Date: Fri, 29 Aug 2014 10:54:08 -0700 Subject: [PATCH 4/4] fix --- src/ng/directive/ngSwitch.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ng/directive/ngSwitch.js b/src/ng/directive/ngSwitch.js index 9df32c1d2476..f7a5cf41da05 100644 --- a/src/ng/directive/ngSwitch.js +++ b/src/ng/directive/ngSwitch.js @@ -146,6 +146,11 @@ var ngSwitchDirective = ['$animate', function($animate) { scope.$watch(watchExpr, function ngSwitchWatchAction(value) { var i, ii; + for (i = 0, ii = previousElements.length; i < ii; ++i) { + previousElements[i].remove(); + } + previousElements.length = 0; + for (i = 0, ii = selectedScopes.length; i < ii; ++i) { var selected = getBlockNodes(selectedElements[i].clone); selectedScopes[i].$destroy();