如何在 underscore.js 模板中使用 if 语句?

发布于 2024-12-02 04:46:00 字数 665 浏览 0 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

如梦 2024-12-09 04:46:00

这应该可以解决问题:

<% if (typeof(date) !== "undefined") { %>
    <span class="date"><%= date %></span>
<% } %>

请记住,在 underscore.js 模板中 iffor 只是封装在 <% %> 中的标准 JavaScript 语法标签。

This should do the trick:

<% if (typeof(date) !== "undefined") { %>
    <span class="date"><%= date %></span>
<% } %>

Remember that in underscore.js templates if and for are just standard javascript syntax wrapped in <% %> tags.

殤城〤 2024-12-09 04:46:00

如果您喜欢更短的 if else 语句,您可以使用以下简写:

<%= typeof(id)!== 'undefined' ?  id : '' %>

这意味着如果有效则显示 id,如果无效则显示空白。

If you prefer shorter if else statement, you can use this shorthand:

<%= typeof(id)!== 'undefined' ?  id : '' %>

It means display the id if is valid and blank if it wasn't.

太傻旳人生 2024-12-09 04:46:00

根据情况和/或您的风格,您可能还想在 中使用 print <% %> 标签,因为它允许直接输出。就像:

<% if (typeof(id) != "undefined") {
     print(id);
}
else {
    print('new Model');
} %>

对于带有一些串联的原始片段:

<% if (typeof(date) != "undefined") {
    print('<span class="date">' + date + '</span>');
} %>

Depending on the situation and or your style, you might also wanna use print inside your <% %> tags, as it allows for direct output. Like:

<% if (typeof(id) != "undefined") {
     print(id);
}
else {
    print('new Model');
} %>

And for the original snippet with some concatenation:

<% if (typeof(date) != "undefined") {
    print('<span class="date">' + date + '</span>');
} %>
同展鸳鸯锦 2024-12-09 04:46:00

如果您需要包含空检查,这里是 underscore.js 中的一个简单的 if/else 检查。

<div class="editor-label">
    <label>First Name : </label>
</div>
<div class="editor-field">
    <% if(FirstName == null) { %>
        <input type="text" id="txtFirstName" value="" />
    <% } else { %>
        <input type="text" id="txtFirstName" value="<%=FirstName%>" />
    <% } %>
</div>

Here is a simple if/else check in underscore.js, if you need to include a null check.

<div class="editor-label">
    <label>First Name : </label>
</div>
<div class="editor-field">
    <% if(FirstName == null) { %>
        <input type="text" id="txtFirstName" value="" />
    <% } else { %>
        <input type="text" id="txtFirstName" value="<%=FirstName%>" />
    <% } %>
</div>
岁月蹉跎了容颜 2024-12-09 04:46:00

响应上面的 blackdivine (关于如何条纹结果),您可能已经找到了答案(如果是这样,那么为您不分享而感到羞耻!),但最简单的方法是使用模运算符。举例来说,您正在 for 循环中工作:

<% for(i=0, l=myLongArray.length; i<l; ++i) { %>
...
<% } %>

在该循环中,只需检查索引的值(在我的例子中为 i):

<% if(i%2) { %>class="odd"<% } else { %>class="even" <% }%>

这样做将检查索引除以 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:

<% for(i=0, l=myLongArray.length; i<l; ++i) { %>
...
<% } %>

Within that loop, simply check the value of your index (i, in my case):

<% if(i%2) { %>class="odd"<% } else { %>class="even" <% }%>

Doing this will check the remainder of my index divided by two (toggling between 1 and 0 for each index row).

塔塔猫 2024-12-09 04:46:00

您可以尝试 _.isUndefine

<% if (!_.isUndefined(date)) { %><span class="date"><%= date %></span><% } %>

You can try _.isUndefined

<% if (!_.isUndefined(date)) { %><span class="date"><%= date %></span><% } %>
月牙弯弯 2024-12-09 04:46:00

来自此处

“您还可以引用数据对象的属性通过该对象,而不是将它们作为变量访问。”这意味着对于OP的情况,这将起作用(与其他可能的解决方案相比,变化要小得多):

<% if (obj.date) { %><span class="date"><%= date %></span><% }  %>

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):

<% if (obj.date) { %><span class="date"><%= date %></span><% }  %>
逆光下的微笑 2024-12-09 04:46:00

要检查 null 值,您可以使用 官方文档 中的 _.isNull

isNull_.isNull(object)

返回 true如果对象的值为空。

_.isNull(null);
=> true
_.isNull(undefined);
=> false

To check for null values you could use _.isNull from official documentation

isNull_.isNull(object)

Returns true if the value of object is null.

_.isNull(null);
=> true
_.isNull(undefined);
=> false
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文