Skip to content

Commit 05fac02

Browse files
committed
perf($compile,ngModel,form): avoid invoking $interpolate for empty/falsy values
1 parent e95860d commit 05fac02

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

src/ng/compile.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1387,7 +1387,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
13871387
attrs[nName] = true; // presence means true
13881388
}
13891389
}
1390-
addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
1390+
if (value) {
1391+
addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
1392+
}
13911393
addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,
13921394
attrEndName);
13931395
}
@@ -1405,7 +1407,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
14051407
}
14061408
break;
14071409
case NODE_TYPE_TEXT: /* Text Node */
1408-
addTextInterpolateDirective(directives, node.nodeValue);
1410+
if (value = node.nodeValue) {
1411+
addTextInterpolateDirective(directives, value);
1412+
}
14091413
break;
14101414
case NODE_TYPE_COMMENT: /* Comment */
14111415
try {

src/ng/directive/form.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
7070
form.$error = {};
7171
form.$$success = {};
7272
form.$pending = undefined;
73-
form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope);
73+
form.$name = (attrs.name || attrs.ngForm) && $interpolate(attrs.name || attrs.ngForm)($scope) || '';
7474
form.$dirty = false;
7575
form.$pristine = true;
7676
form.$valid = true;

src/ng/directive/input.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1712,7 +1712,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
17121712
this.$error = {}; // keep invalid keys here
17131713
this.$$success = {}; // keep valid keys here
17141714
this.$pending = undefined; // keep pending keys here
1715-
this.$name = $interpolate($attr.name || '', false)($scope);
1715+
this.$name = $attr.name && $interpolate($attr.name)($scope) || '';
17161716

17171717

17181718
var parsedNgModel = $parse($attr.ngModel),

0 commit comments

Comments
 (0)