diff options
| author | Sergei Z | 2014-02-14 13:54:41 +0200 |
|---|---|---|
| committer | Caitlin Potter | 2014-02-15 13:48:52 -0500 |
| commit | cceb455fb167571e26341ded6b595dafd4d92bc6 (patch) | |
| tree | 748e7633638419d2139b59e797b839ce9a50c546 | |
| parent | 3018ff7130a42a87c1a2d84ee532edede6bf1d1d (diff) | |
| download | angular.js-cceb455fb167571e26341ded6b595dafd4d92bc6.tar.bz2 | |
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
| -rw-r--r-- | src/ng/filter/filters.js | 2 | ||||
| -rw-r--r-- | test/ng/filter/filtersSpec.js | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index 15cc6e33..b8cc655c 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 2d648b65..66e31397 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"); |
