你有两个问题,一个你知道,一个你不知道。
第一个问题是,_.templateSettings
当您只想替换其中一个时,您正在替换所有三个。你要这个:
_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;
这将留下evaluate
和escape
部分_.templateSettings
单独。你在做什么是一样的:
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g,
evaluate : undefined,
escape : undefined
};
所以你最终没有 a 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/