在手柄中,我已经注册了一个返回列表的辅助函数,例如:
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
答案 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);