由于我正在使用带有 Ruby 的下划线模板,我想要更改默认的 <% %>
标签,因为 Ruby 和下划线模板都使用这个标签。所以我设置了下划线模板来使用其他标签,如下:
<script>
_.templateSettings = {
interpolate: /\[\=(.+?)\]/g,
evaluate: /\[(.+?)\]/g
};
</script>
所以我的模板并不是那么复杂:
<script type="text/html" id='table_list_rows_template'>
[
_.each(items,function(obj,key){
var median = obj.md.toFixed(4)
]
<tr>
<td>[= key + 1]</td>
<td>[= obj.name]</td>
<td>[= median]</td>
</tr>
[ }); ]
所以,当我尝试从模板渲染HTML时,像这样(
tuples
是对象列表,我的表格具有 id table_list
):<script>
$(document).ready(function(){
var template = $("#table_list_rows_template").html();
$("#table_list tbody").html(_.template(template,{items:tuples}));
});
</script>
</script>
所以我遇到了以下错误:
Uncaught SyntaxError: Unexpected token )
并且应该在这一行:
$("#table_list tbody").html(_.template(template,{items:tuples}));
但我无法找出错误所在。我的代码有什么问题?
更新:
我尝试将[]更改为<? ?>
,就像php样式一样,因为第一个提醒了JavaScript数组,所以我想这可能会引起问题。请参见以下内容:
_.templateSettings = {
interpolate: /<\?\=(.+?)\?>/g,
evaluate: /<\?(.+?)\?>/g
};
<script type="text/html" id='table_list_rows_template'>
<?
_.each(items,function(obj,key, list){
?>
<tr id='response_[= obj.id]'>
<td></td>
<td><?= obj.name ?></td>
</tr>
<? }); ?>
</script>
没有任何改变,依然是同样的错误。