From ce6c2b207272302f075fb1ef1961a087896f01e1 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Mon, 10 Jun 2013 12:54:41 -0700 Subject: 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. --- src/bootstrap/bootstrap-prettify.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/bootstrap') diff --git a/src/bootstrap/bootstrap-prettify.js b/src/bootstrap/bootstrap-prettify.js index 026587a2..406995e0 100644 --- a/src/bootstrap/bootstrap-prettify.js +++ b/src/bootstrap/bootstrap-prettify.js @@ -183,7 +183,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); @@ -209,10 +211,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; }]); }]); @@ -223,6 +227,12 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', event.preventDefault(); } }); + + element.bind('$destroy', function() { + deregisterEmbedRootScope(); + embedRootScope.$destroy(); + }); + angular.bootstrap(element, modules); } }; -- cgit v1.2.3