Handlebars.js每个助手如果条件

问题描述:

我正在使用下面的帮助器遍历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://*.com/questions/9687099/conditional-if-statement-helper-for-handlebars-js) – Will

+0

@它会不会解决我的答案。我试过那些。 – JSnewbie

+0

我会推荐过滤你的数据_before_传递给你的模板函数。 – 76484

只需添加一个变量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