我正在使用underscore.js的模板库,但我不确定如何在模板中使用逻辑。例如,我想在模板中打印一个标记数组。最好的方法是什么?
Javascript:
bunny_data = {
name: "sprinkles",
age: 1,
tags: ['fuzzy','wuzzy']
};
bunny_view = $("#bunny-template").html();
$(body).append(_.template(bunny_view,bunny_data));
模板:
<script type='text/template'>
<div>
<h5><% = name %></h5>
<ul class='tag-list'>
<!-- How do I print the tags here? -->
</ul>
</div>
</script>
发布于 2011-12-28 23:15:28
你不需要像@Ken建议的那样封装bunny_data
,你走在了正确的道路上。不管你是想调用_.
函数还是只使用普通的Javascript结构,这取决于你,但是下划线模板中没有内置的流结构,要做到这一点,你只需要嵌入代码(如果你想要的话,你可能想看看eco或Mustache或其他东西)。
我的示例如下所示(与您自己的几乎相同):
<script type='text/template' id="bunny-template">
<div>
<h5><%= name %></h5>
<ul>
<% for(var tag in tags) { %>
<li><%= tags[tag] %></li>
<% } %>
</ul>
</div>
</script>
使用以下Javascript:
bunny_data = {
name: "sprinkles",
age: 1,
tags: ['fuzzy','wuzzy']
};
bunny_view = $("#bunny-template").html();
$(body).append(_.template(bunny_view, bunny_data));
您可以验证它是否运行here。
(出于个人偏好,除了模板,我是所有下划线的重度用户。因此,如果你有更复杂的用例,我对你必须在其中放入的代码量感到不舒服)。
发布于 2011-12-28 04:02:01
看起来您没有在JavaScript中正确设置bunny_data
。
而不是:
$(body).append(_.template(bunny_view,bunny_data));
尝试:
$(body).append(_.template(bunny_view, { bunny_data: bunny_data }));
打印模板中的数据(请注意,我在<%= name %>
中删除了%后面的空格):
<script type='text/template'>
<div>
<h5><%= name %></h5>
<ul class='tag-list'>
<% _.each(bunny_data, function(bd) { %>
<li><%= bd.name %></li>
...
<% }); %>
</ul>
</div>
</script>
希望这能有所帮助。
发布于 2012-04-22 14:31:46
https://stackoverflow.com/questions/8648629
复制相似问题