这些按预期工作:
{{ 999 | currency }}
{{ 999 | number:0 | currency }}
{{ 1000 | currency }}
{{ 50000 | currency }}
这些不会打印任何内容:
{{ 1000 | number:0 | currency }}
{{ 50000 | number:0 | currency }}
有什么想法吗?
答案 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 }}