每一个辅助函数的结果?

时间:2015-05-22 07:09:13

标签: javascript handlebars.js

在手柄中,我已经注册了一个返回列表的辅助函数,例如:

protected void showIds(object sender, CommandEventArgs e)
{
    ((LinkButton)sender).ToolTip = "blahblah";
}

我想调用该函数并使用Handlebars迭代结果,如下所示:

function myHelper() {
    return [
        'some val 1',
        'some val 2',
        'some val 3'
    ]
}

然而,这并没有调用我的函数,我认为它正在查找名为{{#each myHelper}} <li>{{this}}</li> {{/each}} 的上下文中的变量,而不是函数。

有没有办法做到这一点,还是我需要在呈现页面之前将myHelper的结果作为变量添加到上下文中?

我正在使用Node,Express和handlebars-express

1 个答案:

答案 0 :(得分:1)

在JavaScript中,函数是对象,理论上你可以这样做(未经过测试)。

Handlebars.registerHelper('each', function(context, options) {

   // Execute context if it's a function to get the array
   if(typeof context == "function")
     context = context();
  
  var ret;
  
  for(var i=0, j=context.length; i<j; i++) {
    ret += options.fn(context[i]);
  }

  return ret;
});

然后在你的代码中......

function myHelper() {
    return [
        'some val 1',
        'some val 2',
        'some val 3'
    ]
}

var context = {myHelper: myHelper};
var html    = template(context);