一尘不染

删除AngularJS货币过滤器小数/分

angularjs

有没有办法从货币过滤器的输出中删除小数/分?我正在做这样的事情:

<div>{{Price | currency}}</div>

哪个输出:

$ 1,000.00

相反,我想:

$ 1,000

可以使用货币过滤器来完成吗?我知道我可以在数字前加一个美元符号,并且可以编写自己的过滤器,但我希望现有的货币过滤器中存在一种简单的方法。

谢谢。


阅读 219

收藏
2020-07-04

共1个答案

一尘不染

更新 :从
1.3.0
版本开始-currencyFilter:添加fractionSize作为可选参数,请参阅提交
和更新的插件

{{10 | currency:undefined:0}}

请注意,这是第二个参数,因此您需要传入undefined才能使用当前的区域设置货币符号

更新 :请注意,这仅适用于数字前面显示的货币符号。从 1.2.9 版开始,它仍然被硬编码为2个小数位。

是修改后的版本,该版本使用angular的formatNumber的副本启用货币的0
fractionSize。


通常,这应该可以在语言环境定义或currencyFilter调用中进行配置,但是现在( 1.0.4 )将其硬编码为2个小数位。

自定义过滤器:

myModule.filter('noFractionCurrency',
  [ '$filter', '$locale',
  function(filter, locale) {
    var currencyFilter = filter('currency');
    var formats = locale.NUMBER_FORMATS;
    return function(amount, currencySymbol) {
      var value = currencyFilter(amount, currencySymbol);
      var sep = value.indexOf(formats.DECIMAL_SEP);
      if(amount >= 0) { 
        return value.substring(0, sep);
      }
      return value.substring(0, sep) + ')';
    };
  } ]);

模板:

<div>{{Price | noFractionCurrency}}</div>

例:

更新 :修复了处理负值时的错误

2020-07-04