2013-07-15 46 views
9

Sto seguendo questo: http://docs.angularjs.org/api/ng.filter:currency Quando digito 1234.56 nel campo, l'output dovrebbe essere $ 1,234.56. Ma se inserisco l'input 1234, l'output è $ 1,234.00. Non voglio che il decimale e gli zeri appaiano. Come si può fare?Filtro di valuta AngularJS: posso rimuovere il valore .00 se non ci sono centesimi nella quantità?

+0

È possibile utilizzare un filtro avanzato moneta: https://github.com/Zmetser/angular-currency-filter – Oliver

+0

Eventuali duplicati di [Rimozione dei decimali/centesimi del filtro di valuta AngularJS] (http://stackoverflow.com/questions/14782439/removing-angularjs-currency-filter-decimal-cents) – azerafati

risposta

15

aggiungere un nuovo filtro:

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

Secondo lei:

<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

anziché restituire il simbolo $ .. Come posso restituire £? ? –

+1

ignora quel commento –

+2

@OamPsy, basta pulire ed eliminare i tuoi commetns, plz – azerafati

6

preferisco questa risposta in quanto mantiene le virgole per separare le migliaia:

Removing AngularJS currency filter decimal/cents

+1

IMPORTANTE ... la risposta collegata qui mostra che questa funzione è ora inclusa in AngularJs, quindi non devi scrivere alcun codice personalizzato. – ClearCloud8

+0

Questo non risponde alla domanda. La domanda in particolare chiede di mostrare centesimi a meno che i centesimi siano ".00". – Ryan

+0

Questo non risponde alla domanda come ha detto Ryan. –

3

Se vuoi qualcosa di veloce e sporco, è possibile impostare il secondo parametro al filtro in quanto tale, al fine di innescare due cifre decimali quando ci sono, infatti, centesimi a essere mostrato:

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

avvertimento rapida è che questo funziona solo approssimativamente fino al 10^14 poiché una perdita di precisione in virgola mobile causerà amount % 1 per restituire 0.

una sintassi alternativa, che funziona più o meno allo stesso modo, ma è un po 'meno comprensibile è 2*!!(amount % 1)

Problemi correlati