0

我在我的外部模板中使用下划线(使用 require.js)并尝试访问 document.ready 函数中的数据。但是我在执行模板时遇到了上述错误。
下面是代码片段

<script>
    $(document).ready(function(){
         <%_.each(people, function(person){ %>
             console.log(<%=person%>);
      <% }); %>
    });
</script>

我哪里错了?所有帮助将不胜感激。谢谢

4

1 回答 1

2

您似乎对模板的工作方式有些困惑。你需要两个不同的东西:

  1. 模板。这通常放在<script type="text/x-underscore">容器内。我们使用<script>非 HTML 和非 JavaScripttype来防止浏览器尝试以任何方式解释模板数据,我们希望浏览器不理会模板,以便我们可以通过_.template.
  2. 使用模板的 JavaScript。这是您调用_.template以创建模板的函数表示,然后调用该函数以获取您的 HTML 的地方。

所以,如果你想生成一个人员列表,你会有一个这样的模板:

<script id="t" type="text/x-underscore">
    <% _(people).each(function(person) { %>
        <%= person %>
    <% }); %>
</script>

然后你就会有一些这样的 JavaScript 来使用它:

<script type="text/javascript">
    $(document).ready(function() {
        var people = [ 'Tom', 'Dick', 'Harry' ];
        var tmpl   = _.template($('#t').html());
        $('body').append(tmpl({
            people: people
        }));
    });
</script>

请注意,在模板中没有任何<% ... %>东西<script type="text/javascript">,这些东西在模板中。

你可以在模板中调用任何你想要的 JavaScript,这样你也可以这样做:

<script id="t" type="text/x-underscore">
    <% _(people).each(function(person) { %>
        <% console.log(person) %>
    <% }); %>
</script>

当然,如果这就是你想要做的,那么你根本就不会使用模板,你只需要编写一些 JavaScript:

<script type="text/javascript">
    $(document).ready(function() {
        var people = [ 'Tom', 'Dick', 'Harry' ];
        _(people).each(function(person) { // Or any of the other ways of looping over people...
            console.log(person);
        });
    });
</script>

这是上述内容的快速演示:http: //jsfiddle.net/ambiguous/V7DXv/

于 2013-04-29T16:21:15.303 回答