AngularJS currency filter tests
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-i18n/1.2.15/angular-locale_de-de.js"></script>
<div ng-app="editor">
<div ng-controller="Controller">
<ul ng-repeat="number in numbers">
<li><span ng-bind="number"></span> = <span ng-bind="number|wlCurrency"></span></li>
</ul>
</div>
</div>
JavaScript
var module = angular.module('editor', []);
function Controller($scope) {
$scope.numbers = [400, 400.23, 400.85, '400,23', '400,95'];
}
module.config(function($provide) {
$provide.decorator('$locale', function($delegate) {
$delegate.NUMBER_FORMATS.CURRENCY_SYM = 'EUR';
return $delegate;
});
});
module.filter('wlCurrency',
[ '$filter', '$locale',
function(filter, locale) {
var currencyFilter = filter('currency : '$' :'0' ');
var numberFilter = filter('number');
var formats = locale.NUMBER_FORMATS;
return function(amount, currencySymbol) {
return numberFilter(amount, 0) + ' ' + formats.CURRENCY_SYM;
var value = currencyFilter(amount, currencySymbol);
var sep = value.indexOf(formats.DECIMAL_SEP);
if(amount >= 0) {
return value.substring(0, sep);
}
return value.substring(0, sep) + ')';
};
} ]);