我正在尝试在我的jquery代码中使用mustache.js。
不幸的是,我在使用函数格式化数字值时遇到问题。
var data = {
"price": 12000.00,
"format": function () {
return function (text, render) {
return Number( render(text) ).toLocaleString( "it-IT", { maximumFractionDigits: 2 } ) + ' €';
}
}
}
var template = "{{#format}}Formatted price : {{price}} {{/format}}";
var text = Mustache.render(template, data);
//output --> NaN €
我尝试使用parseInt代替Number,但结果相同。
我该怎么办?
谢谢
答案 0 :(得分:1)
胡子不是为这种事情而做的,因为它的目的是减少逻辑。它确实支持自定义功能,但是不会很优雅。在Mustache中,期望在将数据传递到渲染器之前,先进行所有格式化操作。
像Not the right number of induction arguments (expected 2 arguments).
这样的Moustache模板的处理过程是:
contact@zapier.com
被调用,它获取原始文本({{#format}}{{price}}{{/format}}
)作为参数#1,并获得特殊的format
作为参数#2。'{{price}}'
(这将导致render()
进行评估)这意味着您的型号中有一个数字。 render(text)
将其转换为字符串。然后,您必须再次将该字符串解析回一个数字,然后根据您的语言环境重新设置其格式。这是一个非常round回的方法,如果您预先格式化数字并且不尝试将其拔成小胡子,那真的会容易得多。
对于后代,这是使用小胡子时的外观:
{{price}}
render(text)