2013-07-15 4 views
9

Ich bin dabei: http://docs.angularjs.org/api/ng.filter:currency Wenn ich 1234.56 in das Feld eingeben, dann sollte die Ausgabe $ 1.234,56 sein. Aber wenn ich den Eingang 1234 eintippe, dann ist die Ausgabe $ 1,234.00. Ich will nicht, dass die Dezimalzahl und die Nullen erscheinen. Wie kann das gemacht werden?AngularJS-Währungsfilter: Kann ich die .00-Datei entfernen, wenn kein Cent in der Menge vorhanden ist?

+0

Sie können eine erweiterte Währungs Filter verwenden: https://github.com/Zmetser/angular-currency-filter – Oliver

+0

Mögliche doppelte [Entfernen von AngularJS Währungsfilter Dezimal/Cent] (http://stackoverflow.com/questions/14782439/removing-angularjs-currency-filter-decimal-cents) – azerafati

Antwort

15

einen neuen Filter hinzufügen:

'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, ','); 
     }; 
    }]); 

Ihrer Ansicht:

<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 --> 
+0

anstatt das $ -Symbol zurückzugeben .. Wie kann ich £ zurückgeben? ? –

+1

ignorieren Sie diesen Kommentar –

+2

@OamPsy, nur aufräumen und löschen Sie Ihre comments, PLZ – azerafati

6

Ich ziehe diese Antwort, wie es die Kommas hält Tausende zu trennen:

Removing AngularJS currency filter decimal/cents

+1

WICHTIG ... die Antwort hier verknüpft zeigt, dass diese Funktion jetzt in AngularJs enthalten ist, so dass Sie keinen benutzerdefinierten Code schreiben müssen. – ClearCloud8

+0

Dies beantwortet die Frage nicht. Die Frage fragt ausdrücklich nach Cent, es sei denn, die Cent sind ".00". – Ryan

+0

Dies beantwortet nicht die Frage wie Ryan erwähnt. –

3

Wenn Sie wollen etwas schnell und schmutzig, können Sie den zweiten Parameter an die Filter als solche festgelegt, um zwei Dezimalstellen auszulösen, wenn es sich in der Tat Cent gezeigt werden:

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

Schnell Nachteil ist, dass dies nur funktioniert, etwa bis zu 10^14, da ein Verlust der Gleitkomma-Genauigkeit amount % 10 zurückgeben wird.

Eine alternative Syntax, die so ziemlich identisch funktioniert, ist aber etwas weniger verständlich ist 2*!!(amount % 1)

Verwandte Themen