AngularJS .00货币过滤器

时间:2014-09-05 09:59:54

标签: angularjs angularjs-scope angular-filters

我使用了来自AngularJS currency filter: can I remove the .00 if there are no cents in the amount?

的.00货币过滤器

但是,我如何调整过滤器以用逗号分隔值?

例如,

而不是£456789 它应该显示:£456,789

这是我做的一个傻瓜:http://plnkr.co/edit/uDFWkPAmc7PrgDwHPDho?p=preview

过滤器:

app.filter('myCurrency', ['$filter', function ($filter) {


return function(input) {
    input = parseFloat(input);
    if(input % 1 === 0) {
      input = input.toFixed(0);
    }
    return '£' + input;
  };
}]);

2 个答案:

答案 0 :(得分:1)

由于您可以链接过滤器,因此您可以使用类似_.str修剪过滤器的内容:

jsFiddle

<p>My value with currency trimming filter: {{ myValue | currency:'&pound;' | _.str: 'trim':['.00'] }}</p>

结果:

// My value with currency trimming filter: £242,737

如果您计划支持不同国家/地区代表的货币,以防万一有逗号,&#39;,&#39;由于货币的l18n功能而不是点,你可以考虑包括两者的最终版本:

<p>My value with currency trimming filter: {{ myValue | currency:'&pound;' | _.str: 'trim':['.00'] | _.str: 'trim':[',00'] }}</p>

答案 1 :(得分:0)

这是一种方法:

app.filter('myCurrency', ['$filter', function ($filter) {
  return function(input) {
    input = parseFloat(input);
    if(input % 1 === 0) {
      input = input.toFixed(0);
    }

    return '£' + (''+input).replace(/(\d)(?=(\d{3})+($|\.))/g, "$1,");
  };
}]);

Plunker

修改

更新过滤器以改为使用正则表达式。