KnockoutJS和递归模板

Kye*_*ica 7 javascript jquery-templates asp.net-mvc-3 knockout.js

我已经看到了这个问题,并且使用它的方法会在JS控制台上引发错误Uncaught SyntaxError: Unexpected token ).

我试图采用一个递归的类别数组,它具有一个类别数组的Children属性,并使用jquery模板构建它们.我尝试过的每种方法都会导致语法错误.我已经验证了该对象在javascript中正确显示(它来自MVC3,@Html.Raw(Json.Encode(Model.Categories))用于将其放入JS数组中).这是原始的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; }
}
Run Code Online (Sandbox Code Playgroud)

这个调用模板第一级的原始html:

<ul class="nav"  data-bind="template: {name: 'categories_template', foreach: categories}">
        </ul>
Run Code Online (Sandbox Code Playgroud)

和模板本身:

<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>      
Run Code Online (Sandbox Code Playgroud)

如果我取出它的子部分,正确渲染第一级,模板就可以工作.Uncaught SyntaxError: Unexpected token )当我按原样使用代码时,我得到了.我究竟做错了什么?

RP *_*yer 4

你的最后一个{/if}应该是{{/if}}

这是一个示例: http: //jsfiddle.net/rniemeyer/vbKVC/