質問はかなり古いようで、与えられた答えはいいです。ただし、別の代替ソリューションも役立ちます (私のプロジェクトで使用しています)。
これは、正および負の値の数値の接頭辞および接尾辞として通貨記号を使用すると非常にうまく機能します。
カスタム フィルター:
angular.module('your-module', [])
.filter('nfcurrency', [ '$filter', '$locale', function ($filter, $locale) {
var currency = $filter('currency'), formats = $locale.NUMBER_FORMATS;
return function (amount, symbol) {
var value = currency(amount, symbol);
return value.replace(new RegExp('\\' + formats.DECIMAL_SEP + '\\d{2}'), '')
}
}])
テンプレート:
<div>{{yourPrice| nfcurrency}}</div>
異なるロケールの例:
- 10.00 (英語) -> £10
- 20.00 (en-us) -> $20
- -10.00 (en-us) -> ($10)
- 30.00 (da-dk) -> 30 kr
- -30.00 (da-dk) -> -30 kr
米ドルとデンマーク クローネのライブ デモをご覧ください。
アップデート
この回避策は、AngularJS 1.2 以前のリリースのライブラリに適していることに注意してください。AngularJS 1.3の時点で、分数サイズを指定する 3 番目のパラメーターで通貨フォーマッターを使用できます- "金額を丸める小数点以下の桁数"。
AngularJS のローカリゼーションに由来するデフォルトの通貨形式を使用するには、通貨記号 (2 番目のパラメーター) をundefined
(null
または空に設定すると機能しません) を使用する必要があることに注意してください。米ドルとデンマーク クローネのデモの例。