2012-08-28 19 views
5

ラムダを使用して特定の小数点以下の桁数をフォーマットするmustache.jsテンプレートを設定しようとしていますが、問題が発生しています。でも、私はMustache.js lambdasとnumberの書式toFixed

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

これは動作しませんでした(生成された番号があるべき空きスペース:私はのように見えたテンプレートを設定しようとした

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

まず:ように見えるオブジェクトを考えます。多分ラムダは、toFixed機能(mustache docs)を返さないので、正しい形式ではありませんでしたので、私が試した:

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

を繰り返しますが、失敗私もtoMustacheFixed Fを簡素化してみました。お問い合わせ:

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

これは役に立ちませんでした。私はまだテンプレートで空白を得ていた。だから、Mustache.jsはネイティブ関数やプロトタイプ関数を数値で扱うことはできませんか?何か間違っていますか?

答えて

10

することは、このようにそれを試してみてください:http://jsfiddle.net/QXFY4/10/

私はあなたのセクション終了:私はこれでhttp://mustache.github.com/mustache.5.html

でラムダセクションで例に相当する機能toFixedを追加{{/points}}

を、私がすることができましたfloatを解析してtoFixedを呼び出すことによって{{y}}のレンダリングを変更します。

+0

ニースの答え、私はそれを正確に行っていました。 – gonchuki

+0

ニース。これも私がやったのと同じ結論です(しかし、彼自身の質問に答えるその人になりたくはありませんでした)。ありがとう! – roto

+0

固定されたフィドルリンクが修正されました。 – SgtPooki