5

ラムダを使用して数値を特定の小数点以下の桁数にフォーマットするmustache.jsテンプレートを設定しようとしていますが、問題が発生しています。次のようなオブジェクトがあるとします。

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

まず、次のようなテンプレートを設定してみました。

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

これは機能しませんでした(数値があるべき場所に空のスペースが生成されました。toFixedが関数(口ひげのドキュメント)を返さないため、ラムダが正しい形式ではなかった可能性があります)。

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関数を次のように単純化してみました。

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

これは役に立ちませんでした。テンプレートにまだ空白が表示されていました。それで、Mustache.jsは数値のネイティブ関数とプロトタイプ関数を処理できないのでしょうか、それとも私は何か間違ったことをしているのでしょうか?

4

1 に答える 1

10

この方法で試してみてください: http://jsfiddle.net/QXFY4/10/

私はあなたのセクションを終えました:{{/points}}

http://mustache.github.com/mustache.5.htmltoFixedの Lambda セクションの例に対応する関数を追加しました。

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

于 2012-08-28T16:31:56.903 に答える