Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何强制胡须将数字呈现为字符串?_Javascript_Mustache - Fatal编程技术网

Javascript 如何强制胡须将数字呈现为字符串?

Javascript 如何强制胡须将数字呈现为字符串?,javascript,mustache,Javascript,Mustache,对于应用程序来说,这些数字的打印与收到的完全一致是很重要的。进入列表的项目可能并不总是数字或具有相同的小数位数 如何强制将它们打印为接收/处理为字符串 注意-我还使用了unescape标记(&) 注意-我已经尝试将它们重新声明为字符串,但JS在呈现时仍然将它们解释为数字,即 "1.0" => 1 "2.0" => 2 你的模板有点不对劲。尝试使用{.}}而不是{0}或{{&0}}将当前元素作为字符串引用 var view = { list: [new String("1.0"),

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

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

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

"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...
]