2012-01-13 4 views
5

я пытаюсь шаблон следующего массива объектов:Уса шаблонный с массивом объектов

var arr = [{name:"Ryan Pays", url:"http://www.ryanpays.com"}, {name:"foo", url:"http://www.google.com"}]; 

преобразовать этот массив в объект следующим образом:

arr = $.extend({}, arr); 

Что дает мне следующее объект:

{ 
0:{name:"Ryan Pays", url:"http://www.ryanpays.com"}, 
1:{name:"foo", url:"http://www.google.com"} 
} 

Использование Mustache Я хочу перечислить этот объект по шаблону:

var template = "<h4>Your friends' choices</h4>" + 
       "<ul>" + 
       "<li>" + 
       "<p><strong>{{name}}</strong> likes <a href='{{url}}'>this</a></p>" + 
       "</li>" + 
       "</ul>"; 
var html = Mustache.to_html(template, displayData); 
$('.choices').html(html); 

Я, похоже, не могу этого сделать. Я могу получить первый результат, например, для печати следующим образом:

var html = Mustache.to_html(template, displayData[0]); 

И так далее, но не оба.

Ссылка на скрипку этого вопроса:

http://jsfiddle.net/AtJDa/

+8

«Я Усы вам вопрос ..» - извините, я не мог сопротивляться – bobobobo

+0

Мои стороны разделив :) – RyanP13

ответ

16

Вы можете использовать шаблон для массивов:

var template = "<h4>Your friends' choices</h4>" + 
    "<ul>" + 
      "{{#arr}}"+ 
      "<li>" + 
      "<p><strong>{{name}}</strong> likes <a href='{{url}}'>this</a></p>" + 
      "</li>" + 
      "{{/arr}}"+ 
    "</ul>"; 
var html = Mustache.to_html(template, {arr:arr}); 
+0

Это работает как шарм. Невозможно даже увидеть эту документацию. Как это работает? – RyanP13

+0

Извините, я вижу, что происходит сейчас :) – RyanP13

+0

Спасибо nikoshr, это решило мою проблему при работе с каналом JSON, созданным github .. – Zander

5

Вам нужно использовать Усы встроенный в возможности итерации:

var template = "<h4>Your friends' choices</h4>" + 
       "<ul>{{#friends}}" + 
       "<li>" + 
        "<p><strong>{{name}}</strong> likes <a href='{{url}}'>this</a></p>" + 
       "</li>" + 
       "{{/friends}}</ul>"; 

var data = {friends: [{name:"Ryan Pays", url:"http://www.ryanpays.com"}, {name:"foo", url:"http://www.google.com"}]}; 

var html = Mustache.to_html(template, data); 

http://jsfiddle.net/AtJDa/1/

секретный соус в разделе декларации {{#friends}}

+0

У меня нет доступа к объекту на этом уровне в приложении. Мой плохой для того, чтобы не указывать, что в исходном вопросе. – RyanP13

+0

У меня такая же проблема, и я знаю, что такое решение (используйте встроенные итерационные элементы), но моя проблема в том, что у меня нет «Handle» в данных, подобных «друзьям» в вашем примере. От взгляда на возвращенный JSON в Firebug нет имени в массиве JSON. Моя коллекция начинается как '[{name:" Ryan Pays ",' not '{friends: [{name:" Ryan Pays ",' есть ли что-то, что я могу сделать на моем сервере WebAPI, чтобы назвать коллекцию? – Jammer

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