2012-01-04 11 views
6

Estoy tratando de crear un árbol a partir de una lista de etiquetas que tienen etiquetas dentro de ellos.Bigote + objetos anidados

He aquí una muestra de la JSON que estoy usando:

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

Si utilizo la siguiente plantilla bigote, se muestra "Mi primera etiqueta" sin ningún tipo de problemas:

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

Pero entonces Con la siguiente plantilla, intento mostrar las etiquetas dentro de esta primera etiqueta:

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

Uso de esta plantilla, Bigote no representa nada.

¿Cómo visualizo las listas anidadas usando Moustache?

Respuesta

7

para resolver ese problema, lo haré:

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

Espero que ayude

+0

voy a tratar hoy en día, voy a volver a usted! Gracias. –

+0

¡Funciona muy bien! De hecho, tuve un problema porque estaba usando $ ('# my-template'). Html() y reemplaza ">" con ">", tuve que usar replace ('>', '>') –

Cuestiones relacionadas