把钥匙放在车把里

var data = { "name": "Jack", "eventlist": { "1": { "title": "Title1" }, "3": { "title": "Title2", } } }; 

HTML

 

我正在使用车把js进行模板化。我想知道如何迭代数据对象并打印“标题”以及相应的键“1”,“3”

您可以注册一个专用的#each-like blockhelper,它使用循环的“内部”上下文传递散列/对象上下文的键:

 // based on the `#each` helper, requires jQuery (for jQuery.extend) Handlebars.registerHelper('each_hash', function(context, options) { var fn = options.fn, inverse = options.inverse; var ret = ""; if(typeof context === "object") { for(var key in context) { if(context.hasOwnProperty(key)) { // clone the context so it's not // modified by the template-engine when // setting "_key" var ctx = jQuery.extend( {"_key":key}, context[key]); ret = ret + fn(ctx); } } } else { ret = inverse(this); } return ret; }); 

当然,在呈现模板之前需要注册帮助程序。

然后在模板中,您可以使用_key holder来引用该键:

  

然后像任何其他车把模板一样渲染模板:

 var source = $("#list_template").html(); var template = Handlebars.compile(source); var html = template(data); $("div.container ul").append(html);