好的,这有点像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}]
}]
}];
我可以使用以下模板轻松访问“Quiz”及其子“Thankyou”:
<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。它不喜欢我的脚本标签。 :(
答案 0 :(得分:3)
我认为您只需检查子项是否存在,并以子项作为数据对相同的项模板进行递归调用。您还可以有条件地添加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>