多行下划线模板和_.each

时间:2012-08-24 21:58:24

标签: javascript templates loops each underscore.js

我在尝试解析下划线模板时遇到错误,该模板存储为多行字符串:

{{ _.each(records, function(record, index) { }}\
    <tr>\
        {{ record.get("hours") }}\
    </tr>\
{{ }) }}\

错误:

  

Uncaught SyntaxError:意外的令牌)

第1行(_.each行)。

根据下划线的docs,语法对我来说是正确的。

编辑:我应该注意,我在我的模板中使用{{而不是&lt;%=并且更改回&lt;%=不能解决问题。

编辑:这是我用于评估的正则表达式:

// Underscore templates should use {{ variable_name }} instead of <%= variable_name =%>
_.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/g
};

1 个答案:

答案 0 :(得分:4)

您需要使用{[进行评估。

假设您首先defined a regex更改underscore.js用于评估的默认符号,例如

 _.templateSettings = {
       evaluate: /\{\[([\s\S]+?)\]\}/g,
       interpolate: /\{\{([\s\S]+?)\}\}/g, 
       escape: /\{\{-([\s\S]+?)\}\}/g
 };

然后您可以执行类似

的操作
{[ _.each(records, function(record, index) { ]}
    <tr>
        {{ record.get("hours") }}
    </tr>
{[ },this); ]}