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

7y4bm7vi  于 2022-11-10  发布在  其他
关注(0)|答案(8)|浏览(196)

我使用了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语句,因为我的所有模型都没有date参数。然而,这种方法给了我一个错误date is not defined。那么,我如何在一个模板中执行if语句呢?

qv7cva1a

qv7cva1a1#

这样就可以了:

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

请记住,在underscore.js模板中,iffor只是标准的javascript语法, Package 在<% %>标记中。

c6ubokkw

c6ubokkw2#

如果您喜欢较短的if else陈述式,可以使用以下简写:

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

它表示如果有效则显示ID,如果无效则显示空白。

ufj5ltwl

ufj5ltwl3#

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

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

对于带有一些连接的原始代码片段:

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

daolsyd04#

下面是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>
lp0sw83n

lp0sw83n5#

回答上面的blackdivine(关于如何对结果进行条带化),你可能已经找到了答案(如果是这样的话,你应该为没有分享而感到羞耻!),但是最简单的方法是使用取模运算符。例如,你正在处理一个for循环:

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

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

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

这样做将检查索引除以2的余数(对于每个索引行,在1和0之间切换)。

rmbxnbpk

rmbxnbpk6#

您可以尝试_.isUndefined

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

exdqitrt7#

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

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

p5cysglq8#

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

isNull_.isNull(object)

如果object的值为null,则返回true。

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

相关问题