使用数组作为参数传递给助手中的函数,在{{#each}}的一侧用于相同的数组(把手)

时间:2015-07-01 13:11:45

标签: javascript arrays handlebars.js

我正在尝试在电子邮件模板中使用{{#each}}。我想使用相同的数组作为参数传递给辅助函数,做一些事情。我无法在循环中获取数组的值。

这是我正在使用的代码。



Handlebars.registerHelper('ifSameCbeprev', function(index, msg, options) {	
	var ind = parseInt(index);
	var x = ind - 1 ;
    console.log(msg); //here value is undefined.
	if(x<0)
	{		
		return options.inverse(this);
	}
	else
	{
		console.log(msg);
		if(msg[ind].cbe === msg[x].cbe)
		{			
			return options.fn(this);
		}
		else
		{			
			return options.inverse(this);
		}
	}

		
});
&#13;
<html>
  <body>
    {{#each msg}}
        <!-- If task is created  -->
        {{#iftytask ty}}
        <tr width="100%" height="auto" style=" min-height:40px;">
        <td width="100%" height="100%">
       <table width="100%" height="auto" style="padding:10px;">
         <tr width="100%" height="auto"style="position:relative;">
             <td width="98%" height="100%" style="font-size:16px; font-weight: bold;">
                  {{#ifSameCbeprev @index ../msg}}

                   {{else}}
                       <span>{{cfna}}</span>
                {{/ifSameCbeprev}}
              </td>
          </tr>
       </table>
     </td>
    </tr>
    {{/each}}
    </body>
  </html>
&#13;
&#13;
&#13;

我使用的代码如上所述。 ../msg给出undefined(即ifSameCbeprev中的msg)。我尝试使用&#39; this&#39;,msg和../../msg代替../msg。但总是我在函数ifSameCbeprev中得到未定义。 知道如何在{{#each}}中使用数组吗? 提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

我试过这样做而不是检查html。这解决了我的问题。给出下面的代码。

&#13;
&#13;
var msgs = [{cbe : 'abc', ty : 'task'}, {cbe : 'abcd', ty : 'task'}];

for(var k in msgs)
  {
    if(k != 0)
        {
          var sameSender = getCFna(msgs[k-1].cbe , msgs[k].cbe);
    
    if(sameSender == "same")
    {
        msgs[k].creatorName = "";
    }
    else
    {
        msgs[k].creatorName = msgs[k].cfna ? msgs[k].cfna : msgs[k].cbe;
    }
    
    console.log(msgs[k].creatorName);
        }
  }

function getCFna(prevem , currentEm)
{
    if(prevem.toLowerCase().trim() == currentEm.toLowerCase().trim())
    {
        return "same";
    }
    else
    {
        return "not same";
    }
};
&#13;
<html>
  <body>
    {{#each msg}}
        <!-- If task is created  -->
        {{#iftytask ty}}
        <tr width="100%" height="auto" style=" min-height:40px;">
        <td width="100%" height="100%">
       <table width="100%" height="auto" style="padding:10px;">
         <tr width="100%" height="auto"style="position:relative;">
             <td width="98%" height="100%" style="font-size:16px; font-weight: bold;">
                       <span>{{creatorName}}</span>
              </td>
          </tr>
       </table>
     </td>
    </tr>
    {{/each}}
    </body>
  </html>
&#13;
&#13;
&#13;

如果有任何其他解决方案,也可以发布。