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
This commit is contained in:
Sekib Omazic
2014-02-09 17:58:11 +01:00
committed by Tobias Bosch
parent 10d3e1e447
commit e48c28fe92
2 changed files with 7 additions and 1 deletions

View File

@@ -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 = [];