由于我在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>
没有相同的错误。
答案 0 :(得分:1)
从“。”更改模板设置。到“[\ s \ S]”:
_.templateSettings = {
interpolate: /\[\=([\s\S]+?)\]/g,
evaluate: /\[([\s\S]+?)\]/g
};
带有\ s \ S的http://jsfiddle.net/zBTMw/4/ http://jsfiddle.net/zBTMw/5/与... {{3}}。 (有错误)
最新版本的underscore.js使用[\ s \ S]构造,这是我明白的地方。