Mustache.js lambdas和数字格式化为固定

rot*_*oto 5 javascript lambda mustache tofixed

我正在尝试设置一个mustache.js模板,使用lambda将数字格式化为特定的小数位,我遇到了问题.给定一个看起来像这样的对象:

{
     x: 123,
     points: [
          { name: "foo", y: 1.234567 },
          { name: "bar", y: 2.123456 },
          { name: "fax", y: 3.623415 }
     ]
}
Run Code Online (Sandbox Code Playgroud)

首先,我尝试设置一个模板,看起来像:

var template = "{{x}}{{#points}}<br/>{{name}}, {{#y.toFixed}}2{{/y.toFixed}}";
Run Code Online (Sandbox Code Playgroud)

这不起作用(生成一个空的空间,数字应该是.我可能lambda不是正确的格式,因为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}}"
Run Code Online (Sandbox Code Playgroud)

再次,失败.我甚至尝试将toMustacheFixed函数简化为:

Number.prototype.toMustacheFixed = function(){
     return function(){ return 123.45; };
};
Run Code Online (Sandbox Code Playgroud)

这没有用.模板中我还是一片空白.那么,Mustache.js可以不处理数字上的原生函数和原型函数,还是我做错了什么?

小智 10

试试这个:http://jsfiddle.net/QXFY4/10/

我完成了你的部分: {{/points}}

toFixedhttp://mustache.github.com/mustache.5.html的Lambdas部分添加了一个与该示例相对应的函数

有了这个,我能够{{y}}通过解析浮点数并在其上调用toFixed 来改变渲染.