diff options
| author | Misko Hevery | 2010-04-12 19:05:39 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-04-12 19:05:39 -0700 |
| commit | 7c49b255483c0381c23de41d108800f93ebc1979 (patch) | |
| tree | 09c841a413070e3c1eb6d69661f4a344f4a9d556 /src | |
| parent | 713307b6505a56ca7b5423b36e297070d756ff15 (diff) | |
| download | angular.js-7c49b255483c0381c23de41d108800f93ebc1979.tar.bz2 | |
$invalid widget clear on switch change
Diffstat (limited to 'src')
| -rw-r--r-- | src/services.js | 15 | ||||
| -rw-r--r-- | src/widgets.js | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/services.js b/src/services.js index e2132f1c..e91a8eca 100644 --- a/src/services.js +++ b/src/services.js @@ -115,5 +115,20 @@ angularService("$invalidWidgets", function(){ }); return count; }; + invalidWidgets.clearOrphans = function() { + for(var i = 0; i < invalidWidgets.length;) { + var widget = invalidWidgets[i]; + if (isOrphan(widget[0])) { + invalidWidgets.splice(i, 1); + } else { + i++; + } + } + }; + function isOrphan(widget) { + if (widget == window.document) return false; + var parent = widget.parentNode; + return !parent || isOrphan(parent); + } return invalidWidgets; }); diff --git a/src/widgets.js b/src/widgets.js index f5f02813..b281ac2e 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -225,6 +225,8 @@ angularWidget('NG:SWITCH', function ngSwitch(element){ element.append(switchCase.element); childScope.$tryEval(switchCase.change, element); switchCase.template(switchCase.element, childScope); + if (scope.$invalidWidgets) + scope.$invalidWidgets.clearOrphans(); childScope.$init(); } }); |
