2014-10-18 72 views
-1

這些工作按預期:貨幣過濾器,只有圓潤

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

這些不打印任何東西:

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

任何想法?

+0

你到底想幹什麼? ['number'過濾器](https://docs.angularjs.org/api/ng/filter/number)返回一個字符串,['currency' filter](https://docs.angularjs.org/api/ng/filter/currency)需要一個數字,所以顯然不能工作。我想你只是想使用'currency'過濾器的第三個參數。 – Blackhole 2014-10-18 10:21:49

回答

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

0

問題是currency過濾器期望它的輸入是數字,但在1000 | number:0的情況下它會得到字符串,它不能解析爲數字。

如果使用number過濾圓號碼,然後你就可以創造自己的過濾器:

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

而且使用它作爲:{{ 1000 | round | currency }}