2012-07-18 20 views
13

Estoy usando bigote para representar datos json recibidos a través de Ajax.¿cómo puedo formatear el formato de decimal a moneda en el bigote?

Quiero rendir este número en formato de moneda:

{{price}}

por ejemplo: 12300

¿Cómo puedo hacerla como:

"12,300"

utilizando el motor de bigote de plantillas ?

+0

¿Le preocupa la localización? (Usando ',' o '.' Como separador dependiendo de la configuración regional) – guival

Respuesta

1

Debería hacer eso antes de pasar su modelo a bigote (o cualquier motor de plantilla realmente). Además de poder hacer una operación de cadena, el problema es que no todos los países dan el mismo formato a los números, por lo que la representación de la visualización puede diferir y no debe codificarse en la plantilla.

+5

algunos argumentarían que los números son universales, mientras que el formato iso es un problema cultural y de presentación –

12

Moustache es muy minimalista y no proporciona ningún soporte para esto.

que o bien tienen que suministrar los datos formateados o una función que devuelve los datos con formato

{ priceDecimal: function() { return formatDecimal(this.price); } } 

Otra alternativa es utilizar handlebars.js que soporta funciones de ayuda

Handlebars.registerHelper('decimal', function(number) { 
    return formatDecimal(number); 
}); 

y utilizar de esta manera

{{decimal price}} 
+1

Sí. El miembro de bigote.java sugirió que debería haber un modelo de presentación/vista adicional. http://www.javarants.com/2013/03/09/ bigote-is-logic-less-but-the-logic-has-to-go-somewhere/ –

7

Aunque estoy de acuerdo con Lucero's answer, es posible usar un function in Mustache para formatear sus datos.

simple de la plantilla:

<ul> 
    {{#price}} 
     <li>{{commaFormat}}</li> 
    {{/price}} 
</ul> 

JavaScript para procesar los datos con una función de formato para sus precios:

var tpl = $('#tpl').html(), 
    data = { 
     price: ['1234', '123', '123456', '1234567890'], 
     commaFormat: function() { 
      // adapted from https://stackoverflow.com/questions/2901102/how-to-print-number-with-commas-as-thousands-separators-in-javascript 
      return this.replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
     } 
    }, 
    html = Mustache.to_html(tpl, data); 

document.write(html);​ 

HTML resultante:

<ul> 
    <li>1,234</li> 
    <li>123</li> 
    <li>123,456</li> 
    <li>1,234,567,890</li> 
</ul> 

Aquí es the working jsFiddle de inspeccionar y juego con más.

0

uso el paquete de manillares NumeralHelper de https://www.npmjs.com/package/handlebars.numeral

En primer lugar, instalar (y opcionalmente guardarlo en su paquete.JSON):

npm install --save handlebars.numeral 

A continuación, cargar el ayudante:

var Handlebars = require('handlebars'); 
var NumeralHelper = require("handlebars.numeral"); 
NumeralHelper.registerHelpers(Handlebars); 

Por último, lo utilizan en su página:

<script> 
myNumber = 12300: 
</script> 

<div> 
{{ number myNumber }} 
</div> 

La salida de este ejemplo es 12,300.

Cuestiones relacionadas