Как перебрать массив JSON с помощью усов - PullRequest
1 голос
/ 28 февраля 2012

Я новичок в JSON и усы. Я пытаюсь перебрать массив, который я создал, используя Усы, и у меня возникают некоторые проблемы. Мой код выглядит так:

var shows=[         
        {"title":"Strawberry Shortcake","description":"A show about a cake","video":"none","category":"chilren"},
        {"title":"Vanilla Ice","description":"A show about a ice","video":"none","category":"adult"}
];

var template="{{#shows}}{{.}}{{/shows}}";

var html=Mustache.render(template,shows);

document.write(html);

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Вы хотите, чтобы "show" был в хэше для правильной итерации:

var shows={"shows":[        
        {"title":"Strawberry Shortcake","description":"A show about a cake","video":"none","category":"chilren"},
        {"title":"Vanilla Ice","description":"A show about a ice","video":"none","category":"adult"}
]};

var template="{{#shows}}{{.}}{{/shows}}";

var html=Mustache.render(template,shows);

document.write(html);

Это даст желаемый эффект создания вашего шаблона несколько раз.

ОБНОВЛЕНИЕ

К вашему вопросу о Lambdas.Я только что посмотрел это в руководстве .Я думаю, что это охватывает то, о чем вы спрашивали:

Когда значение является вызываемым объектом, таким как функция или лямбда, объект будет вызван и передан блоку текста.Переданный текст является буквенным блоком, не обработанным.{{tags}} не будет расширен - лямбда должна делать это сама.Таким образом, вы можете реализовать фильтры или кэширование.

Шаблон:

{{#wrapped}}
  {{name}} is awesome.
{{/wrapped}}

Хеш:

{
  "name": "Willy",
  "wrapped": function() {
    return function(text) {
      return "<b>" + render(text) + "</b>"
    }
  }
}
1 голос
/ 25 октября 2013

вы можете сделать так:

var shows=[        
        {"title":"Strawberry Shortcake","description":"A show about a cake","video":"none","category":"chilren"},
        {"title":"Vanilla Ice","description":"A show about a ice","video":"none","category":"adult"}
];

var template="{{#.}}title:{{title}},video:{{video}}{{/.}}";

var html=Mustache.render(template,shows);

document.write(html);
...