2012-01-13 19 views
5

Próbuję szablon następującą tablicę obiektów:Wąsy szablonów z tablicą obiektów

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

przekonwertować tej tablicy do obiektu tak:

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

Który daje mi następujące obiekt:

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

Korzystanie Wąsy chcę wyliczać na tym obiekcie z następującego wzoru:

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); 

Nie wydaje mi się, żebym był w stanie to zrobić. Mogę uzyskać pierwszy wynik podobny do wydrukowania:

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

I tak dalej, ale nie oba.

Link do skrzypiec tej kwestii:

http://jsfiddle.net/AtJDa/

+8

„I wąsy ci pytanie ..” - przepraszam, nie mogłem się oprzeć – bobobobo

+0

Moje strony są podzielenie :) – RyanP13

Odpowiedz

16

można użyć szablonu dla tablic:

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

który działa jak czar. Nie można nawet zobaczyć tej funkcji. Jak to działa? – RyanP13

+0

Przepraszam, widzę, co się teraz dzieje :) – RyanP13

+0

Dziękuję Nikoshr, to rozwiązało mój problem podczas pracy z plikiem JSON produkowanym przez github .. – Zander

5

Musisz użyć Wąsy wbudowanej możliwości iteracji:

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/

tajny sos jest w deklaracji sekcji {{#friends}}

+0

Nie mam naprawdę dostępu do obiektu na tym poziomie w aplikacji. Moja zła za to, że nie sprecyzowałem tego w pierwotnym pytaniu. – RyanP13

+0

Mam ten sam problem i wiem, jakie jest rozwiązanie (użyj wbudowanych rzeczy do iteracji), ale moim problemem jest to, że nie mam "Handle" na danych takich jak "przyjaciele" w twoim przykładzie. Od patrzenia na zwrócony JSON w Firebug nie ma nazwy w tablicy JSON. Moja kolekcja zaczyna się od '[{name:" Ryan Pays "," nie "{friends: [{name:" Ryan Pays "," czy jest coś, co mogę zrobić na moim serwerze WebAPI, aby nazwać kolekcję? – Jammer