Просмотр исходного кода

fix #541 currency filter for negative numbers

Evan You 11 лет назад
Родитель
Сommit
23b596f6b2
2 измененных файлов с 7 добавлено и 2 удалено
  1. 3 2
      src/filters/index.js
  2. 4 0
      test/unit/specs/filters_spec.js

+ 3 - 2
src/filters/index.js

@@ -52,13 +52,14 @@ exports.currency = function (value, sign) {
   value = parseFloat(value)
   if (!value && value !== 0) return ''
   sign = sign || '$'
-  var s = Math.floor(value).toString(),
+  var s = Math.floor(Math.abs(value)).toString(),
     i = s.length % 3,
     h = i > 0
       ? (s.slice(0, i) + (s.length > 3 ? ',' : ''))
       : '',
     f = '.' + value.toFixed(2).slice(-2)
-  return sign + h + s.slice(i).replace(digitsRE, '$1,') + f
+  return (value < 0 ? '-' : '') +
+    sign + h + s.slice(i).replace(digitsRE, '$1,') + f
 }
 
 /**

+ 4 - 0
test/unit/specs/filters_spec.js

@@ -58,6 +58,10 @@ describe('Filters', function () {
     expect(filter(false)).toBe('')
     expect(filter(null)).toBe('')
     expect(filter(undefined)).toBe('')
+    // negative numbers
+    expect(filter(-50)).toBe('-$50.00')
+    expect(filter(-150.43)).toBe('-$150.43')
+    expect(filter(-1500.4343434)).toBe('-$1,500.43')
   })
 
   it('key', function () {