2012-08-28 2 views
5

Sto provando a impostare un modello mustache.js che formatta un numero in una posizione decimale specifica utilizzando un lambda e sto riscontrando problemi. Dato un oggetto che assomiglia a:Mustache.js lambdas e formattazione dei numeri su Fixed

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

Per prima cosa ho provato la creazione di un modello che sembrava:.

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

Questo non ha funzionato (generato uno spazio vuoto in cui il numero dovrebbe essere io però . forse il lambda non era nel formato corretto in quanto toFixed non restituisce una funzione (mustache docs) Così ho provato:

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}}" 

ancora una volta, non riescono ho anche provato la semplificazione del toMustacheFixed f. unzione a:

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

Questo non ha aiutato. Stavo ancora ottenendo un vuoto nel modello. Quindi, Mustache.js non può gestire le funzioni native e di prototipo sui numeri o sto facendo qualcosa di sbagliato?

risposta

10

Prova in questo modo: http://jsfiddle.net/QXFY4/10/

ho finito nella sezione: {{/points}}

ho aggiunto una funzione toFixed corrispondente all'esempio nella sezione Lambda a http://mustache.github.com/mustache.5.html

Con questo, sono stato in grado di cambia il rendering di {{y}} analizzando il float e chiamando su Fixed su di esso.

+0

Bella risposta, stavo andando esattamente per quello e l'hai inchiodato meglio di quello che stavo scrivendo. – gonchuki

+0

Bello. Questa è la stessa conclusione che ho raggiunto (ma non volevo essere quel ragazzo che risponde alla sua stessa domanda). Grazie! – roto

+0

collegamento di violino rotto. – SgtPooki