【问题标题】:How to call / run a jQuery nested template recursively如何递归调用/运行 jQuery 嵌套模板
【发布时间】:2011-06-22 01:32:24
【问题描述】:

好吧,这有点像 json 对象和 jquery 模板的开始......我想知道如何更深入。问题是我很懒,希望代码为我完成工作....

问:>如何递归调用jQuery模板。

获取这个 json 对象:

var Links =
[{"Name":"Home","NiceUrl":"/home/","Children":null},
 {"Name":"MX-8","NiceUrl":"/mx-8/","Children":null},
 {"Name":"Quiz","NiceUrl":"/quiz/","Children":
      [{"Name":"Thank you","NiceUrl":"/quiz/thank-you/","Children":
         [{"Name":"Can't get here","NiceUrl":"/URL/","Children":null}]
     }]
 }];

我可以使用以下模板轻松访问“测验”及其子“谢谢”:

<script id="itemTemplate" type="text/x-jquery-tmpl">
    <li><a href="${NiceUrl}">${Name}</a>
        {{tmpl($data) "#childTemplate"}}
    </li>
</script>
<script id="childTemplate" type="text/html">
    <ul>{{each Children}}<li><a href="${NiceUrl}">${Name}</a></li>{{/each}}</ul>
</script>

还使用了 html 和替换它的调用:

<script type="text/javascript">
    $("#itemTemplate").tmpl(Links).appendTo("#SiteMapHolder");
</script>
<ul id="SiteMapHolder">
    <%--jQuery Template will replace this empty space--%>
</ul>

我尝试将第二个模板的类型设置为“text/x-jquery-tmpl”并调用第三个模板,但传递的数据似乎与调用它的父级相同。

那么对于所有具有更高智慧和经验的人,请告诉我如何偷懒并递归调用 jQuery 模板?

PS:对不起,这不在 jsFiddle 中。它不喜欢我的脚本标签。 :(

【问题讨论】:

  • 是否有任何模组知道如何使这个色彩丰富,以便于阅读?
  • 在“盗梦空间”向大众介绍嵌套虚拟机的概念之前,我的一位同事/朋友决定尝试编程,同时服用各种不同的药物(那是 70 年代)。他做了酸,并且在它生效后他从来没有做过太多的编程。他说他看了一些函数的递归定义,然后开始大笑。然后他笑了,因为他在笑。 ...
  • @mike 我在嘲笑我自己。恶性循环什么时候结束!!
  • 没有基本情况,栈顶是极限。

标签: javascript jquery html recursion jquery-templates


【解决方案1】:

我认为您只需要检查 Children 是否存在并以 Children 作为数据对同一项目模板进行递归调用。您还可以有条件地添加 ul 标记。请参阅这个 jsfiddle 了解我的意思:http://jsfiddle.net/bernardchen1/SK2c6/。

我使用的模板本身是这样的:

<script id="itemTemplate" type="text/x-jquery-tmpl">
<li><a href="${NiceUrl}">${Name}</a>
    {{if Children}}
    <ul>
    {{tmpl(Children) "#itemTemplate"}}
    </ul>
    {{/if}}
</li>

【讨论】:

  • 你有任何代码示例可以让我朝着正确的方向开始吗?
  • 您可能在我编辑答案时添加了您的评论。我没有包含我认为可以满足您需求的 jsfiddle,并且还包含了我认为您需要的模板。
  • 非常感谢。它现在真的很简单,我可以看到它。它可以调用自己。我只是把它弄得一团糟。再次感谢。
  • 没问题。当我说“不包括 jsfiddle”时,我的评论应该说“现在”而不是“不”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 2016-07-21
  • 2011-11-07
  • 2012-01-20
  • 2020-05-03
  • 2014-03-23
相关资源
最近更新 更多