Javascript模板-可以进行深度嵌套吗

Javascript模板-可以进行深度嵌套吗,javascript,asp.net,templates,nested,mustache,Javascript,Asp.net,Templates,Nested,Mustache,我正在构建一个任务应用程序(为了好玩)&我只是坐下来思考这个问题。我将在这里用文字把这个问题牢记在心 模型非常简单,它包含项目的集合。每个项目都包含一个任务列表这些任务列表是可嵌套的,例如,一个任务设计FrontPage可以将设计标题作为另一个任务列表。每个任务列表都包含任务。对于这个问题,典型的javascript模板是什么样子的。我不能用一个这样的方案。这个问题与嵌套菜单的N层相同,您将如何使用模板库渲染它 <div> {{#Projects}} <div&

我正在构建一个任务应用程序(为了好玩)&我只是坐下来思考这个问题。我将在这里用文字把这个问题牢记在心

模型非常简单,它包含
项目的集合。每个项目都包含一个
任务列表
这些任务列表是可嵌套的,例如,一个任务设计FrontPage可以将设计标题作为另一个
任务列表
。每个任务列表都包含
任务
。对于这个问题,典型的javascript模板是什么样子的。我不能用一个这样的方案。这个问题与嵌套菜单的N层相同,您将如何使用模板库渲染它

<div>
    {{#Projects}}
    <div>
        <b>{{ProjectName}}</b>
    </div>
    <ul>
        {{#TaskList}}
        <li>{{TaskListName}} {{CreatedBy}} The Problem Comes here - How do i Render a #TaskList
            here </li>
        {{/TaskList}}
    </ul>
    {{/Projects}}
</div>

{{{#项目}
{{ProjectName}}
    {{{#任务列表}
  • {{TaskListName}{{CreatedBy}}问题来了-如何呈现#任务列表 这里
  • {{/TaskList}}
{{/Projects}

顺便说一句,如果有人有asp.net解决方案(让我听听他们的想法),N级深度嵌套是我目前无法克服的问题。

您可以将
任务列表定义为一个部分,并将其作为提示递归包含

模板:

<script type="text/template" id="projects">
    {{#Projects}}
    <div>
        Project: <b>{{ProjectName}}</b>
    </div>
    {{>taskList}}
    {{/Projects}}
</script>

<script type="text/template" id="task-list">
    {{#TaskList}}
    <ul>
        <li>
            {{TaskListName}} <em>{{CreatedBy}}</em> 
            {{>taskList}}
        </li>
    </ul>
    {{/TaskList}}
</script>

下面是jsFiddle,让我们看看它的实际应用情况-

我认为partials的用处不大。太棒了:)谢谢你教我永远不要看不起某样东西。很久以来我一直在寻找这个东西。如果我可以的话,我会投双重票的。。。!!
    var data = {
    Projects: [
        {
        ProjectName: "Project 1",
        TaskList: [{
            TaskListName: "Name 1",
            CreatedBy: "Person 1"},
        {
            TaskListName: "Name 2",
            CreatedBy: "Person 2",
            TaskList: [{
                TaskListName: "Sub Name",
                CreatedBy: "Same Person"},
            {
                TaskListName: "Sub Name 2",
                CreatedBy: "Person 1"},
            {
                TaskListName: "Sub Name 3",
                CreatedBy: "Person 3-2",
                TaskList: [{
                    TaskListName: "Sub Sub Name",
                    CreatedBy: "Person 3-3"}]}]}]},
    {
        ProjectName: "Project 2",
        TaskList: [{
            TaskListName: "Name 3",
            CreatedBy: "Person 3"},
        {
            TaskListName: "Name 4",
            CreatedBy: "Person 4"}]}]
},
    template = $('#projects').html(),
    partials = {
        taskList: $('#task-list').html()
    },
    html = Mustache.render(template, data, partials);

document.write(html);