2013-03-12 50 views
1

我正在根据一组JSON数据填充<option>元素的html <select>列表。我想通过使用字符串插值来整理我的代码,但我无法正确地替换值。在for循环中使用CoffeeScript字符串插值

这里是工作的代码(无插值):

$list 
.empty() 
.append('<option value="' + item.Id + '">' + item.Name + '</option>' for item in data) 

这里是我想要做的事情(不工作):

$list 
.empty() 
.append('<option value="#{item.Id}">#{item.Name}</option>' for item in data) 

这里的一个例子JSON我正在使用:

[ 
    {"Id":"1","Name":"Client-1"}, 
    {"Id":"2","Name":"Client-2"} 
] 

替换不会发生,而是我只是得到一个列表填写正确的数字#{item.Name}字符串。

是否有可能像这样在for循环中使用CoffeeScript字符串插值?

谢谢。

+0

你要找的HTML模板,不具有CoffeeScript的。如果你想避免字符串连接,只需通过jQuery方法构建元素,而不是附加字符串。 – jbabey 2013-03-12 14:41:44

回答

7

字符串插值仅适用于双引号字符串,而不是单引号字符串。

http://coffeescript.org/#strings

这应该工作:

$list 
.empty() 
.append("<option value=\"#{item.Id}\">#{item.Name}</option>" for item in data) 
+0

工作。谢谢。那么在所有CoffeeScript中使用双引号字符串是否是最佳做法?我不知道这些天使用什么。 – biofractal 2013-03-12 16:05:57

+1

@biofractal:除非需要双引号,否则我会引用单引号,这样双引号表示有代码可以查看,而不仅仅是字符串文字。我在所有使用插值的语言中都做同样的事情。 – 2013-03-12 17:24:57

+0

如果您在数据中使用'“”“<选项值=”#{item.Id}“>#{item.Name}”“”您不必转义字符串中的每个双引号。 – shaedrich 2018-03-06 08:42:19