我的HBS文件中有两个属性。一个是用户授权的角色,第二个是数据库中所有可用的角色。我将两者的角色发送到HBS helper并比较它们,如果用户有角色(在value参数中),我将它们添加到一个名为roleArray的新数组中,如果用户没有角色,我将它们从数据库数组中的角色(option参数)添加到roleArray中。
当数组返回时,我不知道如何迭代它。
file.hbs
{{selected properties.roles properties.user.roles ../stateSelected}}express-setup.js
hbs.registerHelper('selected', function(option, value){
var i;
var j;
var roleName;
var userRole;
var roleArray = [];
//Roles the user has
for(i = 0; i < value.length; i++){
userRole = value[i].rolename;
roleArray.push(userRole);
}
//Roles in the database
for(j = 0; j < option.length; j++){
roleName = option[j].rolename;
if(roleArray.includes(roleName)){
//Nothing happens
}else {
roleArray.push(roleName);
}
}
return roleArray;
});所以我想做的是在前端迭代返回的roleArray并显示它们。最终,帮助器将返回一个对象数组,其中包括一个选定的属性,这样我就可以根据用户是否具有该角色来显示开关按钮,但现在只显示它们就可以了。
谢谢。
发布于 2017-01-16 22:45:42
如果你的handlebars版本支持子表达式,那么只需这样做:
{{#each (selected properties.roles properties.user.roles ../stateSelected)}}
do stuff here
{{/each}}如果没有,那么npm上有一个子表达式帮助器,它使用相同的语法。
https://stackoverflow.com/questions/41678633
复制相似问题