javascript - 如何强制 Mustache 将数字呈现为字符串?

标签 javascript mustache

var template = Mustache.compile("{{#list}}<option value=\"{{&0}}\">{{&0}}</option>{{/list}}");

var view = { list: ["1.0", "2.0"] };

var output = template(view);

在上面的代码片段中,输出到 HTML 的数字被“美化”了,即

"1.0" => 1
"2.0" => 2

对于应用程序来说,这些数字与接收到的完全一样打印是很重要的。进入列表的项目可能并不总是数字或具有相同的小数位数。

我如何强制将它们打印为接收/处理为字符串?

注意 - 我还使用了 unescape 标签 (&) 注意 - 我已经尝试将它们重新声明为字符串,但 JS 在呈现时仍将它们解释为数字,即

var view = { list: [new String("1.0"), new String("2.0")] };

最佳答案

您的模板有点不对劲。尝试使用 {{.}} 而不是 {{0}} 或 {{&0}} 将当前元素作为字符串引用。

var template = Mustache.compile("{{#list}}<option value=\"{{.}}\">{{.}}</option>{{/list}}");

这是一个用于演示的 jsFiddle:Fiddle

根据 Mustache 规范,{{.}} 将标识迭代中的当前元素并且应该将小数转换为字符串。在您的情况下,您从字符串开始,这确实是保留小数位数为 0 (1.0 === 1) 所必需的。

mustache 规范(~第 157 行):sections.yml

我不熟悉使用 {{0}} 代替,但显然它的行为有点不同。我没有在规范中找到任何关于它的用法的信息。

您尝试的转义应该只在处理 HTML 时才有必要。

希望对您有所帮助!

关于javascript - 如何强制 Mustache 将数字呈现为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273335/

相关文章:

javascript - React Native onPress 功能不起作用

参数列表后缺少 Javascript )

javascript - 在 mustache 模板中的点击事件上执行函数

java - 使用 Mustache 模板,传递 JSON 并转换为 HTML

javascript - 展开变量内的标签

javascript - 主要浏览器上 WebCL 实现的当前状态是什么?

javascript - 在变量中使用 html

javascript - 如何在 Handlebars 模板中的单选按钮组中设置所选项目?

javascript - 在同一个元素上调用 Mustache 两次失败?

javascript - 当失败的任务使用流队列时,Gulp watch 退出