From e52cdcd9390ad310c9d56da4009b8e05c74ca4d0 Mon Sep 17 00:00:00 2001 From: jimmywarting Date: Wed, 1 Oct 2014 17:18:20 +0200 Subject: [PATCH 1/3] bind perf Speeds up chrome with ~10% firefox by ~5% --- src/ng/directive/ngBind.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/directive/ngBind.js b/src/ng/directive/ngBind.js index 5dbb0a66e87a..50bbafa4b768 100644 --- a/src/ng/directive/ngBind.js +++ b/src/ng/directive/ngBind.js @@ -62,7 +62,7 @@ var ngBindDirective = ['$compile', function($compile) { // We are purposefully using == here rather than === because we want to // catch when value is "null or undefined" // jshint -W041 - element.text(value == undefined ? '' : value); + element[0].textContent = value == undefined ? '' : value; }); }; } From 93455a719deccb569406f1f834a0c3953adce7a5 Mon Sep 17 00:00:00 2001 From: jimmywarting Date: Thu, 2 Oct 2014 09:21:18 +0200 Subject: [PATCH 2/3] Update ngBind.js GC jqlite wrapper. Same for BindTemplate --- src/ng/directive/ngBind.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ng/directive/ngBind.js b/src/ng/directive/ngBind.js index 50bbafa4b768..dcbda364fbed 100644 --- a/src/ng/directive/ngBind.js +++ b/src/ng/directive/ngBind.js @@ -57,12 +57,13 @@ var ngBindDirective = ['$compile', function($compile) { compile: function ngBindCompile(templateElement) { $compile.$$addBindingClass(templateElement); return function ngBindLink(scope, element, attr) { + var element = element[0]; $compile.$$addBindingInfo(element, attr.ngBind); scope.$watch(attr.ngBind, function ngBindWatchAction(value) { // We are purposefully using == here rather than === because we want to // catch when value is "null or undefined" // jshint -W041 - element[0].textContent = value == undefined ? '' : value; + element.textContent = value == undefined ? '' : value; }); }; } @@ -126,10 +127,11 @@ var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate compile: function ngBindTemplateCompile(templateElement) { $compile.$$addBindingClass(templateElement); return function ngBindTemplateLink(scope, element, attr) { - var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate)); + var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate)), + element = element[0]; $compile.$$addBindingInfo(element, interpolateFn.expressions); attr.$observe('ngBindTemplate', function(value) { - element.text(value); + element.textContent = value; }); }; } From f811800ad1c423b345e8ca5ede25aa7a3991cd5c Mon Sep 17 00:00:00 2001 From: jimmywarting Date: Thu, 2 Oct 2014 20:21:22 +0200 Subject: [PATCH 3/3] Fix Linting error ... and removed the comment --- src/ng/directive/ngBind.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/ng/directive/ngBind.js b/src/ng/directive/ngBind.js index dcbda364fbed..aa4d8fa04410 100644 --- a/src/ng/directive/ngBind.js +++ b/src/ng/directive/ngBind.js @@ -57,13 +57,10 @@ var ngBindDirective = ['$compile', function($compile) { compile: function ngBindCompile(templateElement) { $compile.$$addBindingClass(templateElement); return function ngBindLink(scope, element, attr) { - var element = element[0]; $compile.$$addBindingInfo(element, attr.ngBind); + element = element[0]; scope.$watch(attr.ngBind, function ngBindWatchAction(value) { - // We are purposefully using == here rather than === because we want to - // catch when value is "null or undefined" - // jshint -W041 - element.textContent = value == undefined ? '' : value; + element.textContent = value === undefined ? '' : value; }); }; } @@ -127,11 +124,11 @@ var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate compile: function ngBindTemplateCompile(templateElement) { $compile.$$addBindingClass(templateElement); return function ngBindTemplateLink(scope, element, attr) { - var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate)), - element = element[0]; + var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate)); $compile.$$addBindingInfo(element, interpolateFn.expressions); + element = element[0]; attr.$observe('ngBindTemplate', function(value) { - element.textContent = value; + element.textContent = value === undefined ? '' : value; }); }; }