【问题标题】:Javascript Templates - Deep nesting is it possibleJavascript模板 - 深度嵌套是可能的
【发布时间】:2012-01-20 15:28:27
【问题描述】:

我正在构建一个任务应用程序(为了好玩),我只是坐下来思考这个问题。我会在这里用文字表达我的想法。

模型非常简单,它包含Project 的集合。每个项目都包含一个TaskList,这些任务列表是nestable,例如,一个任务Design FrontPage 可以将Design Header 作为另一个TaskList。每个任务列表都包含Tasks。典型的 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>

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

【问题讨论】:

    标签: javascript asp.net templates nested mustache


    【解决方案1】:

    您可以将您的TaskList 定义为部分,并将其递归地包含为the documentation 提示。

    模板:

    <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>
    

    JavaScript:

        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);
    

    这是 jsFiddle 以查看它的实际效果-http://jsfiddle.net/maxbeatty/ND7xv/

    【讨论】:

    • 而我认为分词用处不大。太棒了:)谢谢你教我永远不要小看某事
    • 很久以来一直在寻找这个。如果可以的话,我会给予双重投票...!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多