From 0af172040e03811c59d01682968241e3df226774 Mon Sep 17 00:00:00 2001 From: Lucas Galfasó Date: Wed, 6 Feb 2013 10:08:40 -0300 Subject: feat(ngSwitch): support multiple matches on ngSwitchWhen and ngSwitchDefault Closes #1074 --- src/ng/directive/ngSwitch.js | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'src/ng/directive/ngSwitch.js') diff --git a/src/ng/directive/ngSwitch.js b/src/ng/directive/ngSwitch.js index 7b698107..aa04a998 100644 --- a/src/ng/directive/ngSwitch.js +++ b/src/ng/directive/ngSwitch.js @@ -20,8 +20,11 @@ * On child elments add: * * * `ngSwitchWhen`: the case statement to match against. If match then this - * case will be displayed. - * * `ngSwitchDefault`: the default case when no other casses match. + * case will be displayed. If the same match appears multiple times, all the + * elements will be displayed. + * * `ngSwitchDefault`: the default case when no other case match. If there + * are multiple default cases, all of them will be displayed when no other + * case match. * * @example @@ -69,22 +72,28 @@ var ngSwitchDirective = valueFn({ }], link: function(scope, element, attr, ctrl) { var watchExpr = attr.ngSwitch || attr.on, - selectedTransclude, - selectedElement, - selectedScope; + selectedTranscludes, + selectedElements, + selectedScopes = []; scope.$watch(watchExpr, function ngSwitchWatchAction(value) { - if (selectedElement) { - selectedScope.$destroy(); - selectedElement.remove(); - selectedElement = selectedScope = null; + for (var i= 0, ii=selectedScopes.length; i