5

我正在尝试设置一个 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 可以不处理数字上的本机和原型函数,还是我做错了什么?

4

1 回答 1

10

试试这种方式:http: //jsfiddle.net/QXFY4/10/

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

我在http://mustache.github.com/mustache.5.htmltoFixed的 Lambdas 部分中添加了一个与示例对应的函数

有了这个,我可以{{y}}通过解析浮点数并调用 toFixed 来改变它的渲染。

于 2012-08-28T16:31:56.903 回答