您似乎对模板的工作方式有些困惑。你需要两个不同的东西:
- 模板。这通常放在
<script type="text/x-underscore">
容器内。我们使用<script>
非 HTML 和非 JavaScripttype
来防止浏览器尝试以任何方式解释模板数据,我们希望浏览器不理会模板,以便我们可以通过_.template
.
- 使用模板的 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/