如何在mustache.js中迭代哈希

sam*_*one 5 javascript node.js mustache

鉴于此哈希

a = {
  foo : { ... },
  bar : { ... },
  zap : { ... }
}
Run Code Online (Sandbox Code Playgroud)

我想迭代它,但由于键不同,我不知道如何在Mustache.js

输出看起来像这个foo :(这里的内容)

Jim*_*ert 4

如果您知道要检索的嵌套对象中的键,则可以使用函数。

\n\n

请参阅: http: //jsfiddle.net/jimschubert/zPWDJ/

\n\n

js:

\n\n
$(function() {\n    var names = {\n        "a": [\n            {"foo": { "name": "foo name"}},\n            {"bar": { "name": "bar name"}},\n            {"zap": { "name": "zap name"}}\n        ],\n        "n": function() {\n            var self = this;\n            var n = "";\n            Object.keys(self).forEach(function(k, v) {\n                if (typeof self[k] == "object") {\n                    if(!n) n = self[k]["name"];\n                }\n            });\n            return n;\n        }\n    };\n\n    var template = $(\'#template\').html();\n    var out = $(\'#output\');\n    var html = Mustache.to_html(template, names);\n    console.log(html);\n    out.html(html);\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

html:

\n\n
<script id="template" class="template" type="text/x-mustache">\n{{#a}}\n<p>{{n}}</p>\n{{/a}}\n</script>\n\n<h1>Output</h1>\n<div id="output">\n</div>\n\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

当然,这假设您的数据是一个对象数组(a您帖子中的数据可能是一个更大数组的一个键?)如果您没有数组,我不明白为什么您不会能够为一个对象调整它,并为您正在寻找的每个键的任何属性创建一个 getter 函数。

\n