我正在尝试设置一个mustache.js模板,该模板使用lambda将数字格式化为特定的小数位,我遇到了问题。给定一个看起来像的对象:
{
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}}";
这不起作用(生成一个空格,数字应该是。我可能lambda的格式不正确,因为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函数简化为:
Number.prototype.toMustacheFixed = function(){
return function(){ return 123.45; };
};
这没有帮助。模板中我还是一片空白。那么,Mustache.js可以不处理数字上的原生函数和原型函数,还是我做错了什么?
答案 0 :(得分:10)
以这种方式试试:http://jsfiddle.net/QXFY4/10/
我完成了您的部分:{{/points}}
我在http://mustache.github.com/mustache.5.html
的Lambdas部分添加了与示例相对应的函数toFixed
通过这个,我能够通过解析浮点数并在其上调用toFixed来改变{{y}}
的渲染。