对于jsp中'mustached'下划线模板中的循环

时间:2012-06-18 12:30:33

标签: javascript jsp underscore.js mustache

我在jsp应用程序中使用带有主干的下划线。

为了做到这一点,我使用了:

_.templateSettings = {
        interpolate : /\{\{(.+?)\}\}/g
    };

为了获得类似胡子的模板,以避免jsp冲突。

在此之前一切正常(即用正确的值填充正确的模板)。

现在,我正在尝试在模板中添加for循环以显示json数组。

所以我添加了这段代码:

<script type="text/template" id="im-template">
<div class="row">                                       
    <div class="horizontal-scroll">
        {{ for (var i = 0; i < data.length; i++) { 
            var template = data[i];
            alert(template.name);
        } }}
    </div>
</div>
</script>

但是在运行应用程序时,我得到了:

Uncaught SyntaxError: Unexpected token for 

你知道这可能是什么问题或者我该如何解决?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您正在替换错误的正则表达式,您想要替换 evaluate 正则表达式而不是 interpolate 正则表达式。来自fine manual

  

定义插值正则表达式以匹配应逐字插值的表达式,转义正则表达式以匹配HTML转义后应插入的表达式,以及评估正则表达式以匹配应该在不插入结果字符串的情况下进行评估的表达式。

插值用于将模板标记替换为JavaScript 表达式的结果,但for循环不是JavaScript中的表达式。

如果要使用for循环,则要替换 evaluate 正则表达式:

_.templateSettings.evaluate = /\{\{(.+?)\}\}/g;

演示:http://jsfiddle.net/ambiguous/gaYRb/