Javascript 如何强制胡须将数字呈现为字符串?
对于应用程序来说,这些数字的打印与收到的完全一致是很重要的。进入列表的项目可能并不总是数字或具有相同的小数位数 如何强制将它们打印为接收/处理为字符串 注意-我还使用了unescape标记(&) 注意-我已经尝试将它们重新声明为字符串,但JS在呈现时仍然将它们解释为数字,即Javascript 如何强制胡须将数字呈现为字符串?,javascript,mustache,Javascript,Mustache,对于应用程序来说,这些数字的打印与收到的完全一致是很重要的。进入列表的项目可能并不总是数字或具有相同的小数位数 如何强制将它们打印为接收/处理为字符串 注意-我还使用了unescape标记(&) 注意-我已经尝试将它们重新声明为字符串,但JS在呈现时仍然将它们解释为数字,即 "1.0" => 1 "2.0" => 2 你的模板有点不对劲。尝试使用{.}}而不是{0}或{{&0}}将当前元素作为字符串引用 var view = { list: [new String("1.0"),
"1.0" => 1
"2.0" => 2
你的模板有点不对劲。尝试使用{.}}而不是{0}或{{&0}}将当前元素作为字符串引用
var view = { list: [new String("1.0"), new String("2.0")] };
var-template=Mustache.compile(“{{{{}}{{}}{{/list}}”);
下面是一个要演示的JSFIDLE:
根据Mustache规范,{{.}}将在迭代中标识当前元素,并应将小数转换为字符串。在您的例子中,您可以从字符串开始,这对于保留小数点0位数(1.0==1)是非常必要的
胡须规格(第157行):
我不熟悉使用{{0}}来代替,但显然它的行为有点不同。我在说明书中没有找到任何关于它的用法
只有在处理HTML时才需要尝试转义
我希望这有帮助 {{0}}
(或{0}}
不是因为编码或转换问题而做奇怪的事情,而是因为您要求它做奇怪的事情:)
在Mustach中,首先对当前作用域进行查找,然后对父作用域进行查找,直至堆栈
鉴于这些数据:
var template = Mustache.compile("{{#list}}<option value=\"{{.}}\">{{.}}</option>{{/list}}");
这个小胡子模板:
{list: ["1.0", "2.0"]}
渲染上下文堆栈开始时为:
{{# list }}{{ 0 }}{{/ list }}
但是,只要您输入{{{{#list}}
部分,它就开始在列表项上迭代,上下文堆栈就是:
[
{list: ["1.0", "2.0"]}
]
因此,节中的任何标记都将首先针对“1.0”
进行尝试,如果不成功,将针对{list:[“1.0”,“2.0”]}
进行尝试。所以实际上,你的{&0}
的意思是“1.0”[0]
和“2.0”[0]
当然,它的计算结果是
“1”
和“2”
太好了,它工作得非常好。我以前没看过胡子规格。谢谢感谢您如此好地解释了{{0}的行为。我对此很好奇!同意,很好的解释。多谢!
[
{list: ["1.0", "2.0"]}
]
[
{list: ["1.0", "2.0"]}, // same as before
"1.0" // or, "2.0" in the second trip through the loop...
]