From cceb455fb167571e26341ded6b595dafd4d92bc6 Mon Sep 17 00:00:00 2001 From: Sergei Z Date: Fri, 14 Feb 2014 13:54:41 +0200 Subject: [PATCH] fix(numberFilter): convert all non-finite/non-numbers/non-numeric strings to the empty string The previous code for filtering out non-finite numbers was broken, as it would convert `null` to `0`, as well as arrays. This change fixes this by converting null/undefined/NaN/Infinity/any object to the empty string. Closes #6188 Closes #6261 --- src/ng/filter/filters.js | 2 +- test/ng/filter/filtersSpec.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index 15cc6e33b270..b8cc655c3630 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -118,7 +118,7 @@ function numberFilter($locale) { var DECIMAL_SEP = '.'; function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { - if (isNaN(number) || !isFinite(number)) return ''; + if (number == null || !isFinite(number) || isObject(number)) return ''; var isNegative = number < 0; number = Math.abs(number); diff --git a/test/ng/filter/filtersSpec.js b/test/ng/filter/filtersSpec.js index 2d648b652984..66e3139709f2 100644 --- a/test/ng/filter/filtersSpec.js +++ b/test/ng/filter/filtersSpec.js @@ -128,6 +128,11 @@ describe('filters', function() { expect(number(1234)).toEqual('1,234'); expect(number(1234.5678)).toEqual('1,234.568'); expect(number(Number.NaN)).toEqual(''); + expect(number(null)).toEqual(''); + expect(number({})).toEqual(''); + expect(number([])).toEqual(''); + expect(number(+Infinity)).toEqual(''); + expect(number(-Infinity)).toEqual(''); expect(number("1234.5678")).toEqual('1,234.568'); expect(number(1/0)).toEqual(""); expect(number(1, 2)).toEqual("1.00");