2017-03-01 24 views
0

我正在使用clndr.js日曆和underscore.js模板。Underscore.js將if/else添加到每個函數

尋找一些幫助在下劃線<% _.each函數中實現if/else語句。

<div class="days"> 
    <% _.each(days, function(day) { %> 
    <div class="event <%= day.classes %>" id="<%= day.id %>"> 
     <div class="number"><%= day.day %></div> 
     <% _.each(day.events, function(event){ %> 
      <div class="event <%= event.val %>"></div> 
     <% }) %> 
    </div> 
    <% }); %> 
</div> 

目前<div class="event <%= event.val %>"></div>顯示每一天在一個事件中存在的日曆,這是偉大的。不過,我也想添加一個div幾天,當一個事件不存在:

<div class="days"> 
    <% _.each(days, function(day) { %> 
    <div class="<%= day.classes %>" id="<%= day.id %>"> 
     <div class="number"><%= day.day %></div> 
     <% _.each(day.events, function(event){ %> 

      # if the event exists, show this div 
      <div class="event <%= event.val %>"></div> 

      # else if the event does not exist, show this div: 
      <div class="event none"></div> 
     <% }) %> 
    </div> 
    <% }); %> 
</div> 

回答

1

,這是一個each回調中不會改變任何事情的事實。 Underscore's template可以直接使用JavaScript。

<% if (event && event.val) { %> 
    <div class="event <%= event.val %>"></div> 
<% } else { %> 
    <div class="event none"></div> 
<% } %> 

或者因爲你的例子很瑣碎,以下就足夠了。

<div class="event <%= event.val || 'none' %>"></div> 
+0

感謝您的快速回復。只是經過測試,'else'似乎不會在你提供的代碼的循環中執行。 – user3939059

+0

@ user3939059它真的取決於你的數據是什麼。我稍微改變了我的答案,以更貼近地處理您的問題。 –

+0

對不起,如果我在這裏速度很慢,但是''%_.each(day.events,function(event){%>'遍歷沒有事件存在的日子嗎?還是隻遍歷事件存在的項目?(仍然不能得到其他的執行) – user3939059