He visto this question, y utilizando su método arroja un error en la consola JS Uncaught SyntaxError: Unexpected token)
.KnockoutJS y plantilla recursiva
Estoy tratando de tomar una matriz recursiva de categorías, que tienen una propiedad Children
que es una matriz de categorías, y construirlas usando una plantilla jquery. Cada método que he probado da como resultado algún error de sintaxis. He verificado que el objeto se muestra correctamente en javascript (viene de MVC3, usando @Html.Raw(Json.Encode(Model.Categories))
para obtenerlo en una matriz JS). Aquí está la clase CSharp originales
public class CategoryTreeModel
{
public int Id { get; set; }
public string Name{ get; set; }
public bool Selected { get; set; }
public bool HasChildren { get { return Children.Count > 0; } }
public List<CategoryTreeModel> Children { get; set; }
}
este código HTML original que llama al primer nivel de la plantilla:
<ul class="nav" data-bind="template: {name: 'categories_template', foreach: categories}">
</ul>
y la propia plantilla:
<script type="text/html" id="categories_template">
<li id="category_${Id}" class="category_header">${Name}
{{if $data.HasChildren }}
<ul data-bind='template: { name: "categories_template", foreach: Children}'>
</ul>
{/if}
</li>
La plantilla funciona si saco la sección de niños de ella, representando el primer nivel correctamente. Obtengo Uncaught SyntaxError: Unexpected token)
cuando uso el código como está. ¿Qué estoy haciendo mal?
Nota para los futuros visitantes, esto era knockout1.3, este modelo de plantilla ha quedado en desuso en knockout 2.0 – Tyrsius