diff options
| author | Igor Minar | 2013-06-10 12:54:41 -0700 |
|---|---|---|
| committer | Igor Minar | 2013-06-10 13:14:26 -0700 |
| commit | 6c663154943e4c0c33c19026a7b500302bda29d4 (patch) | |
| tree | 2e04bfd80620dd52023c42ab491b9ebb0c8bc722 /docs | |
| parent | b700aa9291409a94dbc01c6c945ab18391dd9afb (diff) | |
| download | angular.js-6c663154943e4c0c33c19026a7b500302bda29d4.tar.bz2 | |
chore(docs): fix memory leak in example embed code
we need to sever the link between the main root scope and the example
root scope - this is only needed because we are embedding one app
in the other.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/components/angular-bootstrap/bootstrap-prettify.js | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/docs/components/angular-bootstrap/bootstrap-prettify.js b/docs/components/angular-bootstrap/bootstrap-prettify.js index cbe7b53f..f1c3fccb 100644 --- a/docs/components/angular-bootstrap/bootstrap-prettify.js +++ b/docs/components/angular-bootstrap/bootstrap-prettify.js @@ -185,7 +185,9 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', return { terminal: true, link: function(scope, element, attrs) { - var modules = []; + var modules = [], + embedRootScope, + deregisterEmbedRootScope; modules.push(['$provide', function($provide) { $provide.value('$templateCache', $templateCache); @@ -212,10 +214,12 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', } }, $delegate); }]); - $provide.decorator('$rootScope', ['$delegate', function(embedRootScope) { - docsRootScope.$watch(function embedRootScopeDigestWatch() { + $provide.decorator('$rootScope', ['$delegate', function($delegate) { + embedRootScope = $delegate; + deregisterEmbedRootScope = docsRootScope.$watch(function embedRootScopeDigestWatch() { embedRootScope.$digest(); }); + return embedRootScope; }]); }]); @@ -227,6 +231,11 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', } }); + element.bind('$destroy', function() { + deregisterEmbedRootScope(); + embedRootScope.$destroy(); + }); + angular.bootstrap(element, modules); } }; |
