2013-03-12 49 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