Widziałem this question, a za pomocą tej metody zgłasza błąd na konsoli JS Uncaught SyntaxError: Unexpected token)
.KnockoutJS i szablon rekurencyjny
Próbuję pobrać rekurencyjną tablicę kategorii, które mają właściwość Children
, która jest tablicą kategorii, i zbudować je za pomocą szablonu jquery. Każda metoda, którą wypróbowałem, skutkuje błędem składni. Zweryfikowałem, że obiekt jest poprawnie wyświetlany w javascript (pochodzi z MVC3, używając @Html.Raw(Json.Encode(Model.Categories))
, aby go wprowadzić do tablicy JS). Oto oryginalna klasa CSharp
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; }
}
Ten oryginalny html, który wywołuje pierwszy poziom szablonu:
<ul class="nav" data-bind="template: {name: 'categories_template', foreach: categories}">
</ul>
i szablon sama:
<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>
Szablon działa, jeśli wyjmę sekcję potomną, poprawnie renderując pierwszy poziom. Dostaję Uncaught SyntaxError: Unexpected token)
kiedy używam tego kodu, jak jest. Co ja robię źle?
Uwaga dla przyszłych gości, to był knockout1.3, to model szablonu został przestarzały w nokaucie 2.0 – Tyrsius