From fb6062fb9d83545730b993e94ac7482ffd43a62c Mon Sep 17 00:00:00 2001 From: Sekib Omazic Date: Sun, 9 Feb 2014 17:58:11 +0100 Subject: fix($rootScope): ng-repeat can't handle NaN values. #4605 $watchCollection checks if oldValue !== newValue which does not work for NaN. This was causing infinite digest errors, since comparing NaN to NaN in $watchCollection would always return false, indicating that a change was occuring on each loop. This fix adds a simple check to see if the current value and previous value are both NaN, and if so, does not count it as a change. Closes #4605 --- src/ng/rootScope.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/ng') diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js index ce0f8ad5..dbb93000 100644 --- a/src/ng/rootScope.js +++ b/src/ng/rootScope.js @@ -453,7 +453,9 @@ function $RootScopeProvider(){ } // copy the items to oldValue and look for changes. for (var i = 0; i < newLength; i++) { - if (oldValue[i] !== newValue[i]) { + var bothNaN = (oldValue[i] !== oldValue[i]) && + (newValue[i] !== newValue[i]); + if (!bothNaN && (oldValue[i] !== newValue[i])) { changeDetected++; oldValue[i] = newValue[i]; } -- cgit v1.2.3