如果货币的分数成分为零,我该如何隐藏它?

时间:2015-08-31 11:24:15

标签: javascript angularjs angularjs-filter

我希望分数组件显示在零以上的位置,但是当它等于零时隐藏。例如:

{{123.45| currency:"USD$"}}

应显示$ 123.45,但

{{123 | currency:"USD$"}}

必须显示$ 123,而不是$ 123.00。

http://plnkr.co/edit/k8JEGj8KOon6DqB1oZ18

2 个答案:

答案 0 :(得分:3)

我认为你只是说如果分数部分大于零,你只希望分数部分可见。如果是这样,你可以使用它;

{{amount | currency:"USD$": amount % 1 > 0 ? 2 : 0}}

http://plnkr.co/edit/2MHHYspvtYd0pdd1eF49?p=preview

答案 1 :(得分:1)

根据@Stafford Williams的回答,我创建了一个自定义指令。

另外,我调整它以支持你没有提供符号的情况。

.filter('currencyWithoutZeros', ['$filter', function($filter) {
        return function() {
            // Clone arguments so we can modify it
            var argsCopy = Array.prototype.slice.call(arguments);

            var currencyFilter = $filter("currency"); 

            // If currency symbol was not provided, we need to manually add a second argument
            if (argsCopy.length == 1)
              argsCopy.push(undefined);

            var input = argsCopy[0]; 
            argsCopy.push(input % 1 > 0 ? 2 : 0);

            return currencyFilter.apply(undefined, argsCopy);
        };
    }]);

使用它:

  fractions only if existing with custom directive: <span id="currency-no-fractions-custom">{{amount | currencyWithoutZeros:"USD$" }}</span><br/>
  fractions only if existing with custom directive (without symbol): <span id="currency-no-fractions-custom-no-symbol">{{amount | currencyWithoutZeros }}</span>

http://plnkr.co/edit/7ais8OLGOAAcTMfRHoMf?p=preview