一尘不染

为什么AngularJS货币过滤器使用括号将负数格式化?

angularjs

现场演示

为什么这个:

# Controller
$scope.price = -10;

# View
{{ price | currency }}

结果($10.00)而不是-$10.00


阅读 230

收藏
2020-07-04

共1个答案

一尘不染

这是代表负货币的一种流行方法。维基百科

在簿记中,所欠金额通常用红色数字或括号中的数字表示,以替代表示负数的符号。

您可以在Angular源代码中看到他们执行此操作的位置(negSuf/ negPre):

function $LocaleProvider(){
  this.$get = function() {
    return {
      id: 'en-us',

      NUMBER_FORMATS: {
        DECIMAL_SEP: '.',
        GROUP_SEP: ',',
        PATTERNS: [
          { // Decimal Pattern
            minInt: 1,
            minFrac: 0,
            maxFrac: 3,
            posPre: '',
            posSuf: '',
            negPre: '-',
            negSuf: '',
            gSize: 3,
            lgSize: 3
          },{ //Currency Pattern
            minInt: 1,
            minFrac: 2,
            maxFrac: 2,
            posPre: '\u00A4',
            posSuf: '',
            negPre: '(\u00A4',
            negSuf: ')',
            gSize: 3,
            lgSize: 3
          }
        ],
        CURRENCY_SYM: '$'
      },
2020-07-04