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 --- test/ng/rootScopeSpec.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'test/ng/rootScopeSpec.js') diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js index 251a8ce8..2ea41489 100644 --- a/test/ng/rootScopeSpec.js +++ b/test/ng/rootScopeSpec.js @@ -603,6 +603,10 @@ describe('Scope', function() { expect(log.empty()).toEqual([{newVal: [{}, []], oldVal: ['b', {}, []]}]); }); + it('should not infinitely digest when current value is NaN', function() { + $rootScope.obj = [NaN]; + $rootScope.$digest(); + }); it('should watch array-like objects like arrays', function () { var arrayLikelog = []; -- cgit v1.2.3