2012-01-04 11 views
6

Próbuję utworzyć drzewo z listy znaczników, które mają w sobie znaczniki.Wąsy + obiekty zagnieżdżone

Oto próbka JSON używam:

{ 
    "tags": 
    [{"name":"My first tag", 
    "tags": 
    [{"name":"My first tag inside a tag"}, 
    {"name":"My second tag inside a tag"}] 
    }] 
} 

Jeśli używam następujący szablon wąsy, to wyświetla „Mój pierwszy tag” bez żadnych problemów:

<ul> 
{{#tags}} 
<li tag-id="{{id}}"> 
    {{name}} 
</li> 
{{/tags}} 
</ul> 

Ale potem , korzystając z poniższego szablonu, próbuję wyświetlić znaczniki wewnątrz tego pierwszego znacznika:

<ul> 
{{#tags}} 
<li tag-id="{{id}}"> 
    {{name}} 
    <div> 
    {{#tags}} 
    <a>{{name}}</a> 
    {{/tags}} 
    </div> 
</li> 
{{/tags}} 
</ul> 

Korzystanie w tym szablonie wąsy nic nie renderuje.

Jak wyświetlić zagnieżdżone listy za pomocą wąsów?

Odpowiedz

7

Aby rozwiązać ten problem, zrobię:

<div id="result-tag"></div> 
<script language="javascript" type="text/javascript"> 
    function test(){ 
    var view = { 
    "tags": 
    [{"name":"My first tag", 
     "tags": 
     [{"name":"My first tag inside a tag"}, 
     {"name":"My second tag inside a tag"}] 
    }] 
    }; 

    var templt = '<ul>{{#tags}}<li>{{name}}<div>{{>subtags}}</div></li>{{/tags}}</ul>'; 
    var partials = {"subtags": "{{#tags}}<a>{{name}}</a><br/>{{/tags}}"}; 
    var html = Mustache.to_html(templt, view, partials); 
    document.getElementById('result-tag').innerHTML=html; 
} 
window.onload = test; 
</script> 

Mam nadzieję, że pomaga

+0

Spróbuję dzisiaj, będę wracać do Ciebie! Dzięki. –

+0

Działa świetnie! Naprawdę miałem problem, ponieważ używałem $ ('# my-template'). Html() i zastępuje ">" przez ">", musiałem użyć replace ('>', '>') –

Powiązane problemy