我已经看到很多关于如何访问变量的示例,该变量属于循环内的父上下文。但是,我不仅需要访问变量,还需要更改/更新变量。
正如你在下面看到的,我有一个设置变量的自定义帮助器,但是当我尝试在循环中更改该变量时,它不起作用。有没有办法让它发挥作用?
请查看 jsFiddle 。
模板
evalresults
带助手的句柄初学者
evaluation
答案 0 :(得分:2)
答案,就像在JavaScript中一样,是范围。基本上,在this
循环内部使用时,助手setVarWithName
内的data
并未指向{{#each}}
变量,但它确实指向question[@index]
。你需要做什么:
var source = $("#template").html();
var template = Handlebars.compile(source);
var data = {
"questions": [
{"title": "Question 1"},
{"title": "Question 2"}
]
};
Handlebars.registerHelper('setVarWithName', function (name, value) {
data[name] = value; // changed from this to data
return '';
});
$('body').append(template(data));
查看我的工作fiddle。为了便于阅读,我添加了{{s}}
帮助程序将已呈现的this
打印到模板中。