值的角度中断的货币过滤器> 1000,只有圆润

时间:2014-10-18 09:19:36

标签: angularjs

这些按预期工作:

{{ 999 | currency }}
{{ 999 | number:0 | currency }}
{{ 1000 | currency }}
{{ 50000 | currency }}

这些不会打印任何内容:

{{ 1000 | number:0 | currency }}
{{ 50000 | number:0 | currency }}    

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用自定义货币过滤器。检查一下:

app.filter('currencyFilter',
  ['$filter', '$locale', function(filter, locale) {
     var currencyFilter = filter('currency');
     var formats = locale.NUMBER_FORMATS;
     return function(amount, num, currencySymbol) {
       if (num===0) num = -1;
       var value = currencyFilter(amount, currencySymbol);
       var sep = value.indexOf(formats.DECIMAL_SEP)+1;
       var symbol = '';
       if (sep<value.indexOf(formats.CURRENCY_SYM)) symbol = ' '+formats.CURRENCY_SYM;
       return value.substring(0, sep+num)+symbol;
     };
}]);

使用它如下:

{{1000 | currencyFilter:0}} // $1,000
{{1000.234 | currencyFilter:0}} // $1,000
{{1000.55555 | currencyFilter:2}} // $1,000.56

选中此plunker

答案 1 :(得分:0)

问题是currency过滤器期望它的输入是数字,但是如果1000 | number:0它得到字符串,它就不能解析为数字。

如果您使用number过滤器来舍入数字,那么您可以创建自己的过滤器:

myApp.filter('round', function(val) {
  return Math.round(val);
});

并将其用作:{{ 1000 | round | currency }}