2017-03-09 40 views
0

我正在使用for循環並在其中使用ifelse ifJS - 在循環內的第一個else上顯示文本

該循環主要顯示消息,首先顯示30天內到達的消息,然後顯示超過30天的消息。

但我需要把除法說The following notifications are older than 30 days如果我把這個它開始對每封郵件的頂部出現內部else if

 _.forEach(this.collection.models, function(model, index){ 

      <% 
      var createdDateTime= new Date(created_at); 
      var currentDateTime= new Date(); 
      var difference = Math.round((createdDateTime- currentDateTime)/(1000 * 60 * 60 * 24)) 

      if(difference > -30) { %> 
      <div class="notification-box <%- read != true ? 'unread' : '' %>" data-type="<%- deeplink_type %>" data-id="<%- deeplink_id %>"> 
       <p class=""><%- message %></p> 
       <p class="light-grey-text datetime-text" style="margin-top:0.5em;"><%- created_at %></p> 
      </div> 
      <% } else if(difference < -30) { %> 

      <div class="blue banner server-banner" style="min-height: 25px; width: 100%; color: #fff; font-size: .7em; text-transform: uppercase; text-align: center; padding-top: 10px;"> 
       The following notifications are older than 30 days 
      </div> 

      <div class="notification-box <%- read != true ? 'unread' : '' %>" data-type="<%- deeplink_type %>" data-id="<%- deeplink_id %>"> 
       <p class=""><%- message %></p> 
       <p class="light-grey-text datetime-text" style="margin-top:0.5em;"><%- created_at %></p> 
      </div> 
      <% } %> 
     }); 

所以我的問題是,我怎麼能只顯示文本的else if內我想在第一次迭代else if

+0

添加一個布爾檢查,如果該項目尚未添加,但添加它,下一次迭代布爾將被翻轉,您可以忽略它。 – epascarello

回答

2

內這裏是我會怎麼做。你需要一個布爾值來知道你至少進入了一次else if條件。然後在你的else if中使用這個布爾值將會忽略,因爲你第一次進入它時會將它設置爲true

var isAlreadyDisplayed = false; 
_.forEach(this.collection.models, function(model, index){ 

     <% 
     var createdDateTime= new Date(created_at); 
     var currentDateTime= new Date(); 
     var difference = Math.round((createdDateTime- currentDateTime)/(1000 * 60 * 60 * 24)) 

     if(difference > -30) { %> 
     <div class="notification-box <%- read != true ? 'unread' : '' %>" data-type="<%- deeplink_type %>" data-id="<%- deeplink_id %>"> 
      <p class=""><%- message %></p> 
      <p class="light-grey-text datetime-text" style="margin-top:0.5em;"><%- created_at %></p> 
     </div> 
     <% } else if(difference < -30 && !isAlreadyDisplayed) { 
     isAlreadyDisplayed = true;   
     %> 
     <div class="blue banner server-banner" style="min-height: 25px; width: 100%; color: #fff; font-size: .7em; text-transform: uppercase; text-align: center; padding-top: 10px;"> 
      The following notifications are older than 30 days 
     </div> 

     <div class="notification-box <%- read != true ? 'unread' : '' %>" data-type="<%- deeplink_type %>" data-id="<%- deeplink_id %>"> 
      <p class=""><%- message %></p> 
      <p class="light-grey-text datetime-text" style="margin-top:0.5em;"><%- created_at %></p> 
     </div> 
     <% } %> 
    }); 
0

使用真/假開關來滿足您的條件。基於這種情況,您可以填充您的消息,只要差異按照排序順序排列。

1

所以添加一個布爾檢查。在foreach

var isFirst = true; 

之前定義和其他

if(isFirst) { 
    isFirst = false; 
    //output html 
} 
相關問題