Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript KnockoutJS与递归模板_Javascript_Asp.net Mvc 3_Knockout.js_Jquery Templates - Fatal编程技术网

Javascript KnockoutJS与递归模板

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

我看到了,使用它的方法在JS控制台上抛出了一个错误
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);