我的 HBS 文件中有两个属性。一是用户授权的 Angular 色,二是数据库中所有可用的 Angular 色。我将 Angular 色从两者发送到 HBS 助手并比较它们,如果用户具有 Angular 色(在 value
参数中),我将它们添加到一个名为 roleArray
的新数组中,如果用户没有 Angular 色,我将他们从数据库数组(option
参数)中的 Angular 色添加到 roleArray
。
我不知道如何在返回数组时对其进行迭代。
文件.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
并显示它们。最终,助手将返回一个对象数组,其中包括一个选定的属性,这样我就可以根据用户是否具有该 Angular 色来显示开关按钮,但现在只显示它们会很好。
谢谢。
最佳答案
如果你的 handlebars 版本支持子表达式,那么就这样做:
{{#each (selected properties.roles properties.user.roles ../stateSelected)}}
do stuff here
{{/each}}
如果没有,那么 npm 上有一个使用相同语法的子表达式助手。
关于javascript - 迭代从 HandlebarsHelper 返回的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678633/