From 3410f65e790a81d457b4f4601a1e760a6f8ede5e Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski Date: Wed, 16 Oct 2013 15:15:21 +0200 Subject: perf(jqLite): implement and use the `empty` method in place of `html(‘’)` jQuery's elem.html('') is way slower than elem.empty(). As clearing element contents happens quite often in certain scenarios, switching to using .empty() provides a significant performance boost when using Angular with jQuery. Closes #4457 --- test/ng/compileSpec.js | 8 ++++---- test/ng/directive/formSpec.js | 2 +- test/ng/directive/ngIncludeSpec.js | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'test/ng') diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 853290a6..1b98cd58 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -170,26 +170,26 @@ describe('$compile', function() { // First with only elements at the top level element = jqLite('
'); $compile(element.contents())($rootScope); - element.html(''); + element.empty(); expect(calcCacheSize()).toEqual(0); // Next with non-empty text nodes at the top level // (in this case the compiler will wrap them in a ) element = jqLite('
xxx
'); $compile(element.contents())($rootScope); - element.html(''); + element.empty(); expect(calcCacheSize()).toEqual(0); // Next with comment nodes at the top level element = jqLite('
'); $compile(element.contents())($rootScope); - element.html(''); + element.empty(); expect(calcCacheSize()).toEqual(0); // Finally with empty text nodes at the top level element = jqLite('
\n
'); $compile(element.contents())($rootScope); - element.html(''); + element.empty(); expect(calcCacheSize()).toEqual(0); }); diff --git a/test/ng/directive/formSpec.js b/test/ng/directive/formSpec.js index 77beb2fd..dde6f0a0 100644 --- a/test/ng/directive/formSpec.js +++ b/test/ng/directive/formSpec.js @@ -216,7 +216,7 @@ describe('form', function() { // yes, I know, scope methods should not do direct DOM manipulation, but I wanted to keep // this test small. Imagine that the destroy action will cause a model change (e.g. // $location change) that will cause some directive to destroy the dom (e.g. ngView+$route) - doc.html(''); + doc.empty(); destroyed = true; } diff --git a/test/ng/directive/ngIncludeSpec.js b/test/ng/directive/ngIncludeSpec.js index 9e0a47b0..79e7f312 100644 --- a/test/ng/directive/ngIncludeSpec.js +++ b/test/ng/directive/ngIncludeSpec.js @@ -47,7 +47,7 @@ describe('ngInclude', function() { $rootScope.url = 'myUrl'; $rootScope.$digest(); expect(body.text()).toEqual('misko'); - body.html(''); + body.empty(); })); @@ -60,7 +60,7 @@ describe('ngInclude', function() { $rootScope.url = 'myUrl'; $rootScope.$digest(); expect(element.text()).toEqual('Alibaba'); - jqLite(document.body).html(''); + jqLite(document.body).empty(); })); @@ -74,7 +74,7 @@ describe('ngInclude', function() { expect(function() { $rootScope.$digest(); }).toThrowMinErr( '$sce', 'insecurl', /Blocked loading resource from url not allowed by \$sceDelegate policy. URL: http:\/\/example.com\/myUrl.*/); - jqLite(document.body).html(''); + jqLite(document.body).empty(); })); @@ -88,7 +88,7 @@ describe('ngInclude', function() { expect(function() { $rootScope.$digest(); }).toThrowMinErr( '$sce', 'insecurl', /Blocked loading resource from url not allowed by \$sceDelegate policy. URL: http:\/\/example.com\/myUrl.*/); - jqLite(document.body).html(''); + jqLite(document.body).empty(); })); -- cgit v1.2.3