你有兩個問題,一個你知道,一個你不知道。
第一個問題是,如果您只想替換其中的一個,則將替換全部三個_.templateSettings
。你想這樣的:
_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;
這將先不談evaluate
和escape
部分_.templateSettings
。你在做什麼是一樣的:
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g,
evaluate : undefined,
escape : undefined
};
所以你沒有evaluate
都結束了。順便說一句,您可以查看已編譯模板函數的source
屬性以查看您的模板編譯爲的JavaScript,但JavaScript並非那麼容易,但看着它可以幫助解決這類問題。
您不知道的問題是for...in
循環用於迭代對象的屬性,而不是數組中的值。這意味着registration
將會是字符串'0'
,'1'
,...在你的循環內,這不是你想要的。你需要像這樣在你的模板,如果REGISTRATION_NUMBERS
是一個數組:
<% for(var i = 0; i < REGISTRATION_NUMBERS.length; ++i) { %>
<% var registration = REGISTRATION_NUMBERS[i]; %>
<tr>
<td>{{registration.TYPE}}</td>
<td>{{registration.VALUE}}</td>
</tr>
<% } %>
或者,因爲你有下劃線周圍反正,你可以使用_.each
:
<% _(REGISTRATION_NUMBERS).each(function(r) { %>
<tr>
<td>{{r.TYPE}}</td>
<td>{{r.VALUE}}</td>
</tr>
<% }) %>
演示:http://jsfiddle.net/ambiguous/jfckA/
for循環最適合數組,_()。each僅用於集合? –
@NicholasMurray:'_.each'的形式是針對一個數組的,您希望'_(obj).each(function(value,key){...})'爲一個非數組對象,note回調函數的參數順序。我發現'_.each'比模板中的'for(;;)'循環少噪音。 –
感謝您澄清,您剛剛聽到的聲音是我轉換爲_.each循環,謝謝 –