2013-01-24 12 views
10

ho questo nel mio modello manubrio:Handlebars funzione per formattare valuta con javascript

<span class="currencyFormatMe">{{_current_price}}</span> 

Un esempio di ciò che il rendimento del ciclo |: Offerta: $ 24000

vorrei formattare che con virgole e sto fallendo.

Ho questa funzione che funziona nella console, ma fallisce se adattato al codebase con i manubri.

$.fn.digits = function(){ 
    return this.each(function(){ 
     $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
} 

E io lo chiamo come $ ("span.currencyFormatMe") cifre().;

Ancora tutto funziona nella console, ma fallisce se adattato. Tutti gli indicatori sono i benvenuti

provato con un registerhelper:

Handlebars.registerHelper('formatCurrency', 
    $.fn.digits = function(){ 
     return this.each(function(){ 
      $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
     }) 
    } 
); 

Calling:

{{formatCurrency _current_price}} 
+0

non dovrebbe essere usando un registerHelper – epascarello

+0

@epascarello aggiornato il codice di cui sopra in modo da riflettere il mio tentativo di un aiutante .. .. ancora senza fortuna. Qualcosa che spicca? – jahrichie

risposta

18

avete un paio opzioni semplici qui.

È possibile utilizzare il plugin jQuery e applicarlo dopo aver completato il modello di Handlebars; qualcosa di simile:

<script id="t" type="text/x-handlebars"> 
    <span class="currencyFormatMe">{{_current_price}}</span> 
</script> 

e poi:

$.fn.digits = function(){ 
    return this.each(function(){ 
     $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
}; 

var t = Handlebars.compile($('#t').html()); 
var h = t({ 
    _current_price: 1000 
}); 
$('<div>').append(h).find('.currencyFormatMe').digits(); 

Demo: http://jsfiddle.net/ambiguous/732uN/

Oppure si può convertire il vostro plug-in in un aiutante Manubrio e fare la formattazione nel modello. Se vuoi farlo devi solo formattare il valore passato all'helper piuttosto che scherzare con $(this) all'interno dell'helper. Per esempio:

<script id="t" type="text/x-handlebars"> 
    {{formatCurrency _current_price}} 
</script> 

e poi:

Handlebars.registerHelper('formatCurrency', function(value) { 
    return value.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
}); 

var t = Handlebars.compile($('#t').html()); 
var h = t({ 
    _current_price: 1000 
}); 

Demo: http://jsfiddle.net/ambiguous/5b6vh/

+0

Serve solo l'helper del registro, grazie mille! – jahrichie

+0

Grazie per quanto sopra, ma non gestisce per $ 24000.50 ad esempio come un'offerta. Qualche consiglio su quella parte? – Tai

+0

@TaiHirabayashi Intendi la parte '.50'? Probabilmente è meglio cercare una libreria JavaScript 'prinft' e avvolgerla in un helper di Handlebars. –

Problemi correlati