2017-10-16 8 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> 

が重複する可能性のためにEDIT説明: 私は他のブランチからのエラーメッセージを返すようにしようとしたが、それは正確な結果が得られませんでした。アカウントの1つが閉鎖されていることが判明した場合、閉鎖された口座がないことを単に示しています。それはforループを通らない。 forループは、オブジェクト配列全体を反復したいときのメインパスです。各アカウントの数を持つため

EDIT:

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

可能な複製(https://stackoverflow.com/questions/9687099/conditional-if-statement-helper-for-handlebars-js) – Will

+0

[条件Handlebars.jsためのヘルパー "if文"] @私の答えは解決しませんか?私はそれらを試みた。 – JSnewbie

+0

テンプレート関数に渡す前にデータをフィルタリングすることをお勧めします。 – 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

私はループ内の複数のif条件を持つことができますか? – JSnewbie

+0

はい、好きなだけ多く、複数のローカル関数でコードを壊した方が良いでしょう –

+0

@cruiserKDどのように結果の数を数えることができますか? 私はまた、閉じた開いているアカウントの数を表示したいと思います。 – JSnewbie

関連する問題