这是我传递给我的车把模板的模型
module.exports = function(showHeader, userId){ // the data model
return {
userId: userId,
seminars: userSeminars;
};
};
var userSeminars = [{ // some information
seminarId: 1,
isRated: true
}, {
seminarId: 2,
isRated: false
}];
在渲染我的模板时,我使用此HTML代码
{{#each seminars}}
<div class="seminarContainer">
{{#if isRated}}
<button onclick="loadStatistics({{seminarId}}, {{userId}})">Do Something 1</button>
{{else}}
<button onclick="loadQuestionnaire({{seminarId}})">Do Something 2</button>
{{/if}}
</div>
{{/each}}
但在调试时,{{userId}}
未定义。我参加了这个测试程序并将其写在上面每个循环
$(document).ready(function () {
alert({{userId}}); // this works
});
userId
未定义。但是当迭代数组时,它是未定义的。如何将数组范围保留在循环中?我必须访问数据模型对象,而不是数组中的属性。
修改
Access a variable outside the scope of a Handlebars.js each loop
当我想离开范围时,我可以使用{{../userId}}
在循环中
<p>{{../userId}}</p>
工作正常,但在将此用作
等参数时 onclick="loadStatistics({{seminarId}}, {{../userId}})"
第二个参数未定义。
答案 0 :(得分:1)
快速搜索后我发现了这个:
Access a variable outside the scope of a Handlebars.js each loop
我会总结一下,手柄给出一个选项使用../
语法来引用父范围。
例如:
<button onclick="loadStatistics({{seminarId}}, {{../userId}})">Do Something 1</button>
编辑:
进一步观察我也发现了this answer类似的问题。显然,因为当你声明#if
时你在范围链中又上了一层,你需要考虑到这一点。
{{#if isRated}}
<button onclick="loadStatistics({{seminarId}}, {{../../userId}})">Do Something 1</button>
{{else}}
<button onclick="loadQuestionnaire({{seminarId}})">Do Something 2</button>
{{/if}}