如何在手柄模板中创建自定义循环

时间:2017-09-06 06:54:52

标签: javascript node.js express handlebars.js

我是NodeJSExpressJS的新手。我想创建自定义for循环,以便通过NodeJS数据遍历index数据,就像我们用于非for循环一样。

检查NodeJS中的以下代码,其中我将获得角色User的所有用户并将用户转到handlebars视图。

exports.getAll = function (req, res) {
    models.Users.findAll({
        where: {
            role: {$ne: "User"}
        }
    }).then(users => {
        return res.render('users/index', {users: users});
    }).catch(error => {
        return res.json(error);
    });
};

检查我的车把视图。从下面的代码我能够遍历所有用户,但我不想这样使用。

我希望使用正常的for循环for(index = 0; index < count(users); index++

<table class="table table-hover table-light">
    <thead>
        <tr class="uppercase">
            <th class="col-md-2"> Login </th>
            <th class="col-md-6"> Description </th>
            <th class="col-md-2">  </th>
        </tr>
    </thead>
    <tbody>
        {{#each users}}
        <tr>
            <td> {{username}} </td>
            <td> {{about_me}} </td>
            <td>
                <button type="button" id="#basic" data-toggle="modal" href="#basic" class="btn btn-blue btn-xs">Edit</button>
                <button type="button" class="btn btn-danger btn-xs">Remove</button>
            </td>
        </tr>
        {{/each}}
    </tbody>
</table>

我尝试创建辅助函数。检查以下代码

hbs.registerHelper('for', function(from, to, incr, block) {
    var accum = '';
    for(var i = from; i < to; i += incr)
        accum += block.fn(i);
    return accum;
});

是否可以在for模板引擎中创建正常的handlebars循环?

有人可以帮我创建新的辅助函数吗?

1 个答案:

答案 0 :(得分:1)

您需要使用{{@key}}才能在循环中使用index值,

例如,

<tbody>
    {{#each users}}
    <tr>
        <td> {{username}} - {{@key}} </td>
    </tr>
    {{/each}}
</tbody>

希望这有帮助!