Handlebars.js按变量访问嵌套数组值

时间:2018-04-23 07:30:16

标签: javascript handlebars.js

我有一个嵌套对象,所有索引都是时间戳,它包含有关日期的时间戳和当天事件的信息

data : {
    1522620000:  {
        events: {
           1522620940: {title: event1},
           1522620970: {title: event2},
        }
    },
    1522706400:
        events: {
           1522620940: {title: event4},
           1522620970: {title: event6},
        }
    },
    1523311200: {
        events: {}
    },
    ...
}

如何在不循环数组的情况下访问星期五的所有事件? 我只将时间戳1522706400表示为变量timestamp,我想像data[timestamp].events

那样访问它

目前我有

{{#each day}} //<-- another variable from a calendar.. don't care about it
    {{# each data[timestamp].events }} //<-- the day contains information about the timestamp but does not contain the events..
        {{ title }}
    {{/each}}
{{/each}}

我通常使用 AngularJS 来完成类似的事情,但我有一个客户要求我使用把手而我真的很困惑。

1 个答案:

答案 0 :(得分:0)

我能够自己解决这个问题。我创建了以下categories

Helper

所以我可以像

那样访问它
Handlebars.registerHelper("getNestedValue", function(obj, options) {
    var context,
        response = "";
    var timestamp = options.hash.key;

    if(typeof obj[timestamp] !== 'undefined'){
        var data = obj[timestamp]; // <-- all information for the timestamp
        $.each(data.events, function (index, item) { // <-- loop through all events
            context = item;
            response += options.fn(context); // <-- include the variable to the template
        });

    }

    return response;
});