aboutsummaryrefslogtreecommitdiffstats
path: root/src/directive
diff options
context:
space:
mode:
Diffstat (limited to 'src/directive')
-rw-r--r--src/directive/ngSwitch.js10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/directive/ngSwitch.js b/src/directive/ngSwitch.js
index 59c7056e..16b0c4d4 100644
--- a/src/directive/ngSwitch.js
+++ b/src/directive/ngSwitch.js
@@ -69,19 +69,21 @@ var ngSwitchDirective = valueFn({
element.data(NG_SWITCH, cases);
return function(scope, element){
var selectedTransclude,
- selectedElement;
+ selectedElement,
+ selectedScope;
scope.$watch(watchExpr, function(value) {
if (selectedElement) {
+ selectedScope.$destroy();
selectedElement.remove();
- selectedElement = null;
+ selectedElement = selectedScope = null;
}
if ((selectedTransclude = cases['!' + value] || cases['?'])) {
scope.$eval(attr.change);
- selectedTransclude(scope.$new(), function(caseElement, scope) {
+ selectedScope = scope.$new();
+ selectedTransclude(selectedScope, function(caseElement) {
selectedElement = caseElement;
element.append(caseElement);
- element.bind('$destroy', bind(scope, scope.$destroy));
});
}
});