Mustache.js函数用于格式编号

时间:2019-02-18 16:45:08

标签: jquery mustache

我正在尝试在我的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,但结果相同。
我该怎么办? 谢谢

1 个答案:

答案 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)