2012-08-28 20 views
5

Estoy tratando de configurar una plantilla de moustache.js que formatea un número a un lugar decimal específico usando un lambda y me estoy encontrando con problemas. Dado un objeto que se parece a:Moustache.js lambdas y formato de número en Fijo

{ 
    x: 123, 
    points: [ 
      { name: "foo", y: 1.234567 }, 
      { name: "bar", y: 2.123456 }, 
      { name: "fax", y: 3.623415 } 
    ] 
} 

En primer lugar he intentado configurar una plantilla que parecía:.

var template = "{{x}}{{#points}}<br/>{{name}}, {{#y.toFixed}}2{{/y.toFixed}}"; 

Esto no funcionó (generado un espacio vacío en el que el número debería ser yo, aunque . tal vez el lambda no estaba en el formato correcto ya toFixed no devuelve una función (mustache docs) Así que he intentado:

Number.prototype.toMustacheFixed = function(){ 
    var n = this; 
    return function(d){ return n.toFixed(d); }; 
}; 
var template = "{{x}}{{#points}}<br/>{{name}}, {{#y.toMustacheFixed}}2{{/y.toMustacheFixed}}" 

una vez más, dejar incluso he intentado simplificar el toMustacheFixed f. unction a:

Number.prototype.toMustacheFixed = function(){ 
    return function(){ return 123.45; }; 
}; 

Esto no ayudó. Todavía estaba recibiendo un espacio en blanco en la plantilla. Entonces, ¿no puede Mustache.js manejar funciones nativas y prototipo en números, o estoy haciendo algo mal?

Respuesta

10

Trate de esta manera: http://jsfiddle.net/QXFY4/10/

terminé una sección: {{/points}}

he añadido una función toFixed correspondiente al ejemplo de la sección Lambdas en http://mustache.github.com/mustache.5.html

Con esto, yo era capaz de cambie la representación de {{y}} analizando el flotador y llamando a Fijo en él.

+0

Una respuesta agradable, iba exactamente para eso y lo entiendes mejor de lo que estaba escribiendo. – gonchuki

+0

Agradable. Esta es la misma conclusión a la que llegué también (pero no quería ser ese tipo que responde su propia pregunta). ¡Gracias! – roto

+0

enlace de violín roto fijo. – SgtPooki