2017-10-16 45 views
0

我正在使用下面的幫助器遍歷JSON數組並返回基於條件的結果以查找帳戶是否已關閉(OpenOrClosedDesc=='Closed')。我正在獲取所有已關閉的帳戶。但是現在如果沒有關閉帳戶,我想在屏幕上打印一條錯誤消息。Handlebars.js每個助手如果條件

Handlebars.registerHelper('each_Closed', function(list, opts) { 
       var i, result = ''; 
       try { 
        //console.log("List Closed length "+ list.length) 
        for (i = 0; i < list.length; i++) 
         if (list[i].OpenOrClosedDesc == 'Closed'){ 
          // console.log("List Closed "+ list[i].OpenOrClosedDesc == 'Closed') 
          result = result + opts.fn(list[i]); 
         } 
       return result; 
      }catch(e){ 

      } 
     }); 

HTML代碼:可能的重複

<div id = "Revolving_ClosedAcc"> 
    {{#repData}} 
    {{#each_Closed arf.TradeLine.TradeLine.[Revolving Accounts]}} 
    . 
    . 
    . 
    . 
    . 
    {{/each_Closed}} 
    {{/repData}} 
</div> 

編輯說明: 我試圖從一個else分支返回錯誤信息,但它並沒有給出準確的結果。它只是顯示如果發現其中一個帳戶已關閉,則沒有已關閉的帳戶。它不通過for循環。 for循環是我想遍歷整個對象數組的主要路徑。

編輯爲每個帳戶的數量:

Handlebars.registerHelper('each_Closed', function(list, opts) { 
       var i, result = '',resCounter=0,closedAccountFound = false; 
       try { 
        //console.log("List Closed length "+ list.length) 
        for (i = 0; i < list.length; i++) { 
         if (list[i].OpenOrClosedDesc == 'Closed') { 
          // console.log("List Closed "+ list[i].OpenOrClosedDesc == 'Closed') 
          result = result + opts.fn(list[i]); 
          resCounter++; 
          closedAccountFound = true; 
         } 
        } 
        console.log(resCounter); 
        return closedAccountFound ? result : "No close account found."; 
       }catch(e){ 

       } 
      }); 

我正在在執行console.log(resCounter)計數 ,但我怎麼能返回或者換句話說,我怎麼可以打印在車把? 我必須寫另一個幫手嗎?

我該怎麼做?

在此先感謝。

+0

的可能的複製[條件 「if語句」 幫手Handlebars.js(https://stackoverflow.com/questions/9687099/conditional-if-statement-helper-for-handlebars-js) – Will

+0

@它會不會解決我的答案。我試過那些。 – JSnewbie

+0

我會推薦過濾你的數據_before_傳遞給你的模板函數。 – 76484

回答

1

只需添加一個變量closedAccountFound = false,並在發現任何已關閉的帳戶時將其賦值爲true,然後在返回結果前檢查該值,如果closedAccountFound爲true,則返回結果,否則返回消息。

Handlebars.registerHelper('each_Closed', function(list, opts) { 
      var i, result = '', closedAccountFound = false; 
      try { 
       //console.log("List Closed length "+ list.length) 
       for (i = 0; i < list.length; i++) 
        if (list[i].OpenOrClosedDesc == 'Closed'){ 
         // console.log("List Closed "+ list[i].OpenOrClosedDesc == 'Closed') 
         result = result + opts.fn(list[i]); 
         closedAccountFound = true; 
        } 
      return closedAccountFound ? result : "No close account found."; 
     }catch(e){ 

     } 
    }); 
+0

我可以有多個如果條件內循環? – JSnewbie

+0

是的,儘可能多的,但它會更好,如果你在多個本地功能中破壞你的代碼 –

+0

@cruiserKD我如何計算結果的數量? 像我還想顯示已關閉和開放帳戶的數量。 – JSnewbie