Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

bind perf #9369

Closed
wants to merge 3 commits into from
Closed
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/ng/directive/ngBind.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is nonsense, because all supported browsers will output the empty string in the case of null --- only undefined is an issue. I am going to remove the comment and use strict equals

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized you didn't add the comment =) but yeah... removing it

element.text(value == undefined ? '' : value);
element.textContent = value == undefined ? '' : value;
});
};
}
Expand Down Expand Up @@ -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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we not checking for an undefined value as we are above, in this case? gecko and webkit will render undefined, which we probably don't want (do we? Chrome won't, fwiw)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should use a condition here too, so that the behaviour is consistent across browsers

});
};
}
Expand Down