【发布时间】:2011-11-07 02:15:40
【问题描述】:
我从数据库中获取一个 json,然后动态加载一个模板并应用该 json。此变量中存储的数据是自引用的(典型的 id - parent_id)。 我无法对该数据进行递归。
json:
var my_json = {"modules":[
{
"id_modules": "1",
"id_modules_parent": "0",
"mod_name": "mod 1",
"sub_modules": [
{
"id_modules": "2",
"id_modules_parent": "1",
"mod_name": "mod 1a",
"sub_modules": ""
},
{
"id_modules": "3",
"id_modules_parent": "1",
"mod_name": "mod 1b",
"sub_modules": ""
}
]
},
{
"id_modules": "4",
"id_modules_parent": "0",
"mod_name": "mod 2",
"sub_modules": [
{
"id_modules": "5",
"id_modules_parent": "4",
"mod_name": "mod 2a",
"sub_modules": [
{
"id_modules": "7",
"id_modules_parent": "5",
"mod_name": "mod 2aa",
"sub_modules": ""
}
]
},
{
"id_modules": "6",
"id_modules_parent": "4",
"mod_name": "mod 2b",
"sub_modules": ""
}
]
}
]}
这是我渲染模板的方式:
$.get("template_file.txt", function(template)
{
$.tmpl(template, my_json).appendTo("#some_div");
});
最后是模板(template_file.txt):
<ul class="modules_ul">
{{each(i, module) modules}}
<li>${module.mod_name}</li>
{{each(j, submodule) module.sub_modules}}
{{tmpl(submodule) ".modules_ul" }} //what goes here?
{{/each}}
{{/each}}
</ul>
有人可以帮我吗?提前致谢!
编辑: 添加了jsfiddle 来玩
解决方案:在post中查看 mblase75 的回答
【问题讨论】:
-
您可以控制 JSON 对象吗?因为只要您使用结构化数据,就没有理由为任何内容包含父 ID。
-
你是对的,没有理由包含它,但问题仍然存在......
-
你不需要一些东西来显示一些数据,而不仅仅是构建一棵树吗?
标签: jquery templates recursion jquery-templates