Как перебрать хеш в mustache.js - PullRequest
5 голосов
/ 02 апреля 2012

Учитывая этот хеш

a = {
  foo : { ... },
  bar : { ... },
  zap : { ... }
}

я хочу перебрать его, но поскольку ключи разные, я не уверен, как в Mustache.js

вывод будет выглядеть примерно так foo: (содержимое здесь)

1 Ответ

4 голосов
/ 02 апреля 2012

Если вы знаете ключ во вложенном объекте, который вы пытаетесь получить, вы можете использовать функцию.

см .: http://jsfiddle.net/jimschubert/zPWDJ/

ЯШ:

$(function() {
    var names = {
        "a": [
            {"foo": { "name": "foo name"}},
            {"bar": { "name": "bar name"}},
            {"zap": { "name": "zap name"}}
        ],
        "n": function() {
            var self = this;
            var n = "";
            Object.keys(self).forEach(function(k, v) {
                if (typeof self[k] == "object") {
                    if(!n) n = self[k]["name"];
                }
            });
            return n;
        }
    };

    var template = $('#template').html();
    var out = $('#output');
    var html = Mustache.to_html(template, names);
    console.log(html);
    out.html(html);
});​

HTML:

<script id="template" class="template" type="text/x-mustache">
{{#a}}
<p>{{n}}</p>
{{/a}}
</script>

<h1>Output</h1>
<div id="output">
</div>
​

Это, конечно, предполагает, что ваши данные - это массив объектов (возможно, a в вашем сообщении будет одним из ключей большего массива?) Если у вас нет массива, я не понимаю, почему вы не смог бы настроить это для объекта и создать функцию получения для любых свойств каждого ключа, который вы ищете.

...