javascript - 迭代从 HandlebarsHelper 返回的数组

标签 javascript handlebars.js

我的 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/

相关文章:

javascript - 悬停淡入淡出不适用于砌体 CSS

javascript - 预编译 Handlebars 模板以使其发挥作用的正确方法,就像 Jade 那样

node.js - 如何通过布局使用快速 Handlebars 中的侧边栏和主要内容

javascript - 当某些键是数字时,按对象键对数据排序不起作用

javascript - 在 styled-components 中传递一个 window.onload 函数

javascript - 在reactjs中添加两个数字

javascript - 无法将变量传递给 Handlebars 3 中的部分变量

html - Handlebars 将 '@partial-block' 内容移动到页面末尾

javascript - 将任意参数传递给 Handlebars 助手?

javascript - 使用 mouseover() javascript 更改在 CSS 中设置的 div 元素背景