车把 #if 不在 #forEach 内部工作
Handlebars #if not working inside #forEach
我需要呈现 table,如果用户具有管理员权限,将显示 link。我有一个#forEach,里面有一个{{#if isAdmin}}。 isAdmin 是一个助手,目前只是 returns true 或 false。如果我呈现 {{isAdmin}} 它会正确显示值(true,false)但是如果我尝试用 {{#if}} 评估它没有任何反应。我的代码:
Nodejs 自定义助手:
var hbs = handlebars.create({
partialsDir: [
'view/partials/'
],
helpers:{
isAdmin: function(){
return true;
}
}
});
HTML - 把手
{{#forEach eventData}}
<tr>
<td>{{@index}}</td>
<td>{{general_name}}</td>
<td>{{general_description}}</td>
<td>
<a href="/view/{{_id}}">View</a>
{{#if isAdmin}}
<a href="/versions/{{_id}}">Details & Changes</a>
{{/if}}
</td>
</tr>
{{/forEach}}
link "Details & Changes" 从不显示。有什么想法吗?
我发现我可以使用以下语法访问 forEach 外部的变量:
{{../foo}} or {{#myhelper ../myfoo}}
帮手
h.registerHelper('isAdmin', function(username, options) {
var admins = 'admin';
if(admins.includes (username)) {
return options.fn(this);
}else{
return options.inverse(this);
}
});
h.registerHelper('isCreator', function(logged_in, created_by, options) {
if(logged_in == created_by) {
return options.fn(this);
}else{
return options.inverse(this);
}
});
车把
{{#forEach eventData}}
<tr>
<td>{{@index}}</td>
<td>{{general_name}}</td>
<td>{{general_description}}</td>
<td>{{submited_by}}</td>
<td>{{general_setup_by}} | {{general_register_by}}</td>
<td>{{general_time_start}} | {{general_time_end}}</td>
<td>{{layout_room}}</td>
{{#isAdmin ../username}}
<td><a href="/versions/{{id}}">Details & Changes</a></td>
{{else}}
{{#isCreator ../username updated_by}}
<td><a href="/event/{{id}}">Edit</a></td>
{{else}}
<td><a href="/view/{{id}}">View</a></td>
{{/isCreator}}
{{/isAdmin}}
</tr>
{{/forEach}}
我需要呈现 table,如果用户具有管理员权限,将显示 link。我有一个#forEach,里面有一个{{#if isAdmin}}。 isAdmin 是一个助手,目前只是 returns true 或 false。如果我呈现 {{isAdmin}} 它会正确显示值(true,false)但是如果我尝试用 {{#if}} 评估它没有任何反应。我的代码:
Nodejs 自定义助手:
var hbs = handlebars.create({
partialsDir: [
'view/partials/'
],
helpers:{
isAdmin: function(){
return true;
}
}
});
HTML - 把手
{{#forEach eventData}}
<tr>
<td>{{@index}}</td>
<td>{{general_name}}</td>
<td>{{general_description}}</td>
<td>
<a href="/view/{{_id}}">View</a>
{{#if isAdmin}}
<a href="/versions/{{_id}}">Details & Changes</a>
{{/if}}
</td>
</tr>
{{/forEach}}
link "Details & Changes" 从不显示。有什么想法吗?
我发现我可以使用以下语法访问 forEach 外部的变量:
{{../foo}} or {{#myhelper ../myfoo}}
帮手
h.registerHelper('isAdmin', function(username, options) {
var admins = 'admin';
if(admins.includes (username)) {
return options.fn(this);
}else{
return options.inverse(this);
}
});
h.registerHelper('isCreator', function(logged_in, created_by, options) {
if(logged_in == created_by) {
return options.fn(this);
}else{
return options.inverse(this);
}
});
车把
{{#forEach eventData}}
<tr>
<td>{{@index}}</td>
<td>{{general_name}}</td>
<td>{{general_description}}</td>
<td>{{submited_by}}</td>
<td>{{general_setup_by}} | {{general_register_by}}</td>
<td>{{general_time_start}} | {{general_time_end}}</td>
<td>{{layout_room}}</td>
{{#isAdmin ../username}}
<td><a href="/versions/{{id}}">Details & Changes</a></td>
{{else}}
{{#isCreator ../username updated_by}}
<td><a href="/event/{{id}}">Edit</a></td>
{{else}}
<td><a href="/view/{{id}}">View</a></td>
{{/isCreator}}
{{/isAdmin}}
</tr>
{{/forEach}}