如何在 underscore.js 模板中使用 if 语句?
我正在使用 underscore.js 模板函数,并完成了如下模板:
<script type="text/template" id="gridItem">
<div class="griditem <%= gridType %> <%= gridSize %>">
<img src="<%= image %>" />
<div class="content">
<span class="subheading"><%= categoryName %></span>
<% if (date) { %><span class="date"><%= date %></span><% } %>
<h2><%= title %></h2>
</div>
</div>
</script>
如您所见,我在那里有一个 if 语句,因为我的所有模型都没有日期参数。然而,这样做会给我一个错误日期未定义
。那么,如何在模板中执行 if 语句呢?
I'm using the underscore.js templating function and have done a template like this:
<script type="text/template" id="gridItem">
<div class="griditem <%= gridType %> <%= gridSize %>">
<img src="<%= image %>" />
<div class="content">
<span class="subheading"><%= categoryName %></span>
<% if (date) { %><span class="date"><%= date %></span><% } %>
<h2><%= title %></h2>
</div>
</div>
</script>
As you can see I have an if statement in there because all of my models won't have the date parameter. However this way of doing it gives me an error date is not defined
. So, how can I do if statements within a template?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这应该可以解决问题:
请记住,在 underscore.js 模板中
if
和for
只是封装在<% %>
中的标准 JavaScript 语法标签。This should do the trick:
Remember that in underscore.js templates
if
andfor
are just standard javascript syntax wrapped in<% %>
tags.如果您喜欢更短的 if else 语句,您可以使用以下简写:
这意味着如果有效则显示 id,如果无效则显示空白。
If you prefer shorter if else statement, you can use this shorthand:
It means display the id if is valid and blank if it wasn't.
根据情况和/或您的风格,您可能还想在
中使用 print <%
%>
标签,因为它允许直接输出。就像:对于带有一些串联的原始片段:
Depending on the situation and or your style, you might also wanna use print inside your
<%
%>
tags, as it allows for direct output. Like:And for the original snippet with some concatenation:
如果您需要包含空检查,这里是 underscore.js 中的一个简单的 if/else 检查。
Here is a simple if/else check in underscore.js, if you need to include a null check.
响应上面的 blackdivine (关于如何条纹结果),您可能已经找到了答案(如果是这样,那么为您不分享而感到羞耻!),但最简单的方法是使用模运算符。举例来说,您正在 for 循环中工作:
在该循环中,只需检查索引的值(在我的例子中为 i):
这样做将检查索引除以 2 的余数(在 1 和 1 之间切换 )每个索引行 0)。
Responding to blackdivine above (about how to stripe one's results), you may have already found your answer (if so, shame on you for not sharing!), but the easiest way of doing so is by using the modulus operator. say, for example, you're working in a for loop:
Within that loop, simply check the value of your index (i, in my case):
Doing this will check the remainder of my index divided by two (toggling between 1 and 0 for each index row).
您可以尝试 _.isUndefine
You can try _.isUndefined
来自此处:
“您还可以引用数据对象的属性通过该对象,而不是将它们作为变量访问。”这意味着对于OP的情况,这将起作用(与其他可能的解决方案相比,变化要小得多):
From here:
"You can also refer to the properties of the data object via that object, instead of accessing them as variables." Meaning that for OP's case this will work (with a significantly smaller change than other possible solutions):
要检查 null 值,您可以使用 官方文档 中的
_.isNull
返回 true如果对象的值为空。
To check for null values you could use
_.isNull
from official documentationReturns true if the value of object is null.