AngularJS货币过滤器:如果金额中没有美分,我可以删除.00吗?

时间:2013-07-15 23:15:24

标签: angularjs

我关注此事:http://docs.angularjs.org/api/ng.filter:currency 当我在现场输入1234.56时,输出应为$ 1,234.56。但如果输入输入1234,则输出为$ 1,234.00。我不希望出现小数和零。 怎么办呢?

3 个答案:

答案 0 :(得分:16)

添加新过滤器:

'use strict';

angular
    .module('myApp')
    .filter('myCurrency', ['$filter', function($filter) {
        return function(input) {
            input = parseFloat(input);
            input = input.toFixed(input % 1 === 0 ? 0 : 2);
            return '$' + input.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
        };
    }]);

在您看来:

<span>{{ '100' | myCurrency }}</span> <!-- Result: $100 -->
<span>{{ '100.05' | myCurrency }}</span> <!-- Result: $100.05 -->
<span>{{ '1000' | myCurrency }}</span> <!-- Result: $1,000 -->
<span>{{ '1000.05' | myCurrency }}</span> <!-- Result: $1,000.05 -->

答案 1 :(得分:7)

我更喜欢这个答案,因为它让逗号分开成千上万:

Removing AngularJS currency filter decimal/cents

答案 2 :(得分:4)

如果你想要快速和,你可以将第二个参数设置为过滤器,以便在实际显示分数时触发两个小数位:

{{amount | currency:undefined:2*(amount % 1 !== 0)}}

快速警告:这只能大致达到10 ^ 14,因为失去浮点精度会导致amount % 1返回0

另一种语法,它的工作方式非常相似,但有点不太容易理解2*!!(amount % 1)