Подтвердить что ты не робот

Итерация через массив JSON с усами

Я новичок в Усы, пожалуйста, медведь со мной:)

У меня есть массив в моем JSON

"prop":{"brands":["nike","adidas","puma"]}

если у меня есть шаблон, подобный этому

{{#prop}}
 <b>{{brands}}</b>
{{prop}}

и я хочу получить что-то вроде:

<b>nike</b>
<b>adidas</b>
<b>puma</b>

Я понимаю, что элементы в массиве не являются парами ключ-значение хеша, однако мне интересно, есть ли усы в любом случае, что я могу перебирать элементы.

Спасибо!

4b9b3361

Ответ 1

усы безболезненны, поэтому писать свою собственную итерацию/петлю в ней невозможно. Однако легко конвертировать JSON. Например:

var json = '{"prop":{"brands":["nike","adidas","puma"]}}';
var obj = JSON.parse(json);
var data = {brands: obj.prop['brands'].map(function(x){ return {name: x}; })};

Дает вам переменную data, которая будет работать с шаблоном:

{{#brands}}
  <b>{{name}}</b>
{{/brands}}

Ответ 2

Вот рабочая скрипка: http://jsfiddle.net/Qa4UX/

В принципе, вам нужно перебирать массив брендов. Поскольку ваш массив является сырым и не имеет объектов внутри, вам нужно ссылаться на каждую строку следующим образом:

{{#props}}
  <ul>
  {{#brands}}
    <li>
    {{#.}}
        <b>{{.}}</b>
    {{/.}}
    </li>
  {{/brands}}
  </ul>
{{/props}}

Здесь вы также можете найти еще много примеров: https://github.com/janl/mustache.js#mustachejs---logic-less-mustache-templates-with-javascript

Ответ 3

Это работает

{{#json.props.brands}}
<h1>{{.}}</h1>
{{/json.props.brands}}

{{.}} При переходе по массиву строк a. может использоваться для ссылки на текущий элемент в списке.