迭代Hogan.js中的键/值

时间:2012-03-25 22:31:17

标签: javascript templating hogan.js

有没有办法使用Hogan.js迭代对象中的键和值?我无法找到这样的文档功能 - 只有对数组进行迭代才能记录下来。是否可以遍历hogan.js(或任何其他moustache.js实现)中的对象?

2 个答案:

答案 0 :(得分:4)

没有办法直接迭代Hogan.js中对象中的键和值,sub_stantial正在做的是基本上迭代数组。

根据您的要求,您需要一些预渲染代码。假设你有一个{ k1: "v1", k2: "v2" }的对象。并且您希望渲染的模板为k1 has value v1; k2 has value v2;,您只需要这个(_是underscore库):

var oAsList = [];
_.each(_.keys(oAsList), function (k) {
  oAsList.push({ key: k, value: o[k] });
})

实现这一诀窍的Mustache模板是
{{#oAsList}} {{key}} has value {{value}}; {{/oAsList}}

答案 1 :(得分:1)

我昨天遇到了同样的情况,经过Hogan.jsMustache.js的一些研究后,我发现了这个解决方案:

var data = { 'list' : [{ 'name' : 'dhg'}, {'name' : 'abc'}] };
var template = Hogan.compile("{{#list}} {{name}} {{/list}}");
var output = template.render(data);
console.log(output);

您可以在此处看到它:http://jsfiddle.net/LuD6j/1/