Handlebars数组查找

7

I have JSON object:

{
    groups: [
        {id: 1, title: "group1"},
        {id: 2, title: "group2"},
    ],
    users: [
        {id:1, login: "user1", groupId: 1},
        {id:2, login: "user2", groupId: 2},
        {id:3, login: "user3", groupId: 1}
    ]
}

和handlebars模板:

{{#each users}}
    <tr data-id="{{id}}">
        <td>{{login}}</td>
        <td data-id="{{groupId}}">{{lookup ../groups groupId}}{{title}}</td>
    </tr>
{{/each}}

但是它没有起作用。模板已经编译并且表格已经渲染,但是表格组列仅包含td标签的id属性。如何在td标签内呈现组标题(使用此JSON对象在handlebars中是可能的)?

查找助手是什么? - raidendev
从handlebars网站(http://handlebarsjs.com/builtin_helpers.html):lookup助手允许使用Handlebars变量进行动态参数解析。这对于解析数组索引的值非常有用。 - Bet
1个回答

4

lookup助手只能通过数组索引进行查找,而不能根据id进行查找,但是您可以创建一个助手来实现这一点:

Handlebars.registerHelper('lookup2', function(collection, id) {
    var collectionLength = collection.length;

    for (var i = 0; i < collectionLength; i++) {
        if (collection[i].id === id) {
            return collection[i];
        }

    }

    return null;
});

接下来,您需要从该对象中查找标题。在这里,我使用#with来更改上下文:

{{#each users}}
    <tr data-id="{{id}}">
        <td>{{login}}</td>
        <td data-id="{{groupId}}">{{#with (lookup2 ../groups groupId)}}{{title}}{{/with}}</td>
    </tr>
{{/each}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接