迭代从HandlebarsHelper返回的数组

时间:2017-01-16 14:27:46

标签: javascript handlebars.js

我的HBS文件中有两个属性。一个是用户授权角色,第二个是数据库中可用的所有角色。我将角色从两者发送到HBS帮助程序并进行比较,如果用户具有角色(在value参数中),我将它们添加到名为roleArray的新数组中,如果用户没有&#39 ; t具有我从数据库数组中的角色(roleArray参数)将它们添加到option的角色。

我不知道在返回数组时如何迭代数组。

file.hbs

{{selected properties.roles properties.user.roles ../stateSelected}}

表达-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并显示它们。最终帮助器将返回一个包含所选属性的对象数组,以便我可以根据用户是否具有该角色来打开或关闭切换按钮,但是现在只显示它们会很好。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您的车把版本支持子表达式,那么就这样做:

{{#each (selected properties.roles properties.user.roles ../stateSelected)}}
    do stuff here
{{/each}}

如果没有,那么在npm上有一个使用相同语法的子表达式助手。