Javascript KnockoutJS与递归模板
我看到了,使用它的方法在JS控制台上抛出了一个错误Javascript KnockoutJS与递归模板,javascript,asp.net-mvc-3,knockout.js,jquery-templates,Javascript,Asp.net Mvc 3,Knockout.js,Jquery Templates,我看到了,使用它的方法在JS控制台上抛出了一个错误uncaughtsyntaxerror:Unexpected-token) 我试图获取一个递归的类别数组,它有一个Children属性,这是一个类别数组,并使用jquery模板构建它们。我尝试过的每个方法都会导致一些语法错误。我已经验证了该对象在javascript中正确显示(它来自MVC3,使用@Html.Raw(Json.Encode(Model.Categories))将其放入JS数组)。这是最初的csharp类 public class
uncaughtsyntaxerror: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; }
}
公共类CategoryTreeModel
{
公共int Id{get;set;}
公共字符串名称{get;set;}
已选择公共布尔值{get;set;}
public bool haschilds{get{返回Children.Count>0;}
公共列表子项{get;set;}
}
此原始html调用模板的第一级:
<ul class="nav" data-bind="template: {name: 'categories_template', foreach: categories}">
</ul>
以及模板本身:
<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>
${Name}
{{if$data.haschilds}
希望这对将来的访问者有所帮助注意,这是淘汰赛1.3,该模板模型在淘汰赛2.0中已被弃用。请不要对多个问题发布完全相同的答案:不是所有问题都适合,就是问题重复,因此应标记/关闭。Andrei,这个问题是针对旧版本的淘汰赛,你的答案不适用。啊,好的,我知道了,但让它留在那里。我想我的帖子会对某些人有用
var viewModel = {
treeRoot: ko.observableArray()
};
var TreeElement = function(name, children) {
var self = this;
self.children = ko.observableArray(children);
self.name = ko.observable(name);
}
var tree = [
new TreeElement("Russia", [
new TreeElement("Moscow")
]),
new TreeElement("United States",
[
new TreeElement("New York", [
new TreeElement("Harlem"),
new TreeElement("Central Park")
])
])
];
viewModel.treeRoot(tree);
ko.applyBindings(viewModel);