2013-06-24 4 views
10

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

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

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

, если у меня есть шаблон, как этот

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

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

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

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

Спасибо!

ответ

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}} 
+0

Спасибо, разобрав JSON перед рукой, кажется лучшим решением. – Liang

29

Вот рабочая скрипку: 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

+0

спасибо за ответ Пол, я вижу вашу точку зрения и думаю, что это будет решение, однако я не могу представить пример скрипта для создания html-результата, когда я нажимаю «run», но очень приятное решение, спасибо! – Liang

+0

привет. Просто из любопытства: разве вы не видите список в html-фрейме в jsfiddle? – peshkira

+1

Nope,

все, что я вижу, и ссылка «Запустить» ничего не делает для него ... – Liang

14

Это работает

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

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

Смежные вопросы