aboutsummaryrefslogtreecommitdiffstats
path: root/src/Angular.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/Angular.js')
-rw-r--r--src/Angular.js28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/Angular.js b/src/Angular.js
index 8675bc40..2b26c88d 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -244,18 +244,17 @@ function copy(source, destination){
while(destination.length) {
destination.pop();
}
+ for ( var i = 0; i < source.length; i++) {
+ destination.push(copy(source[i]));
+ }
} else {
foreach(destination, function(value, key){
delete destination[key];
});
+ for ( var key in source) {
+ destination[key] = copy(source[key]);
+ }
}
- foreach(source, function(value, key){
- destination[key] = value ?
- ( isArray(value) ?
- copy(value, []) :
- (isObject(value) ? copy(value, {}) : value)) :
- value;
- });
return destination;
}
}
@@ -291,12 +290,15 @@ function elementError(element, type, error) {
while (!isRenderableElement(element)) {
element = element.parent() || jqLite(document.body);
}
- if (error) {
- element.addClass(type);
- element.attr(type, error);
- } else {
- element.removeClass(type);
- element.removeAttr(type);
+ if (element[0]['$NG_ERROR'] !== error) {
+ element[0]['$NG_ERROR'] = error;
+ if (error) {
+ element.addClass(type);
+ element.attr(type, error);
+ } else {
+ element.removeClass(type);
+ element.removeAttr(type);
+ }
}
}