Dee*_*ons 5 javascript asp.net templates nested mustache
我正在构建一个任务应用程序(为了好玩)我只是坐下来思考这个问题.我会在这里用言语表达我的想法.
模型非常简单,它包含了集合Project
.每个Project都包含一个TaskList
这样的TaskList是可嵌套的,例如,Task Design FrontPage可以将Design Header作为另一个TaskList
.每个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>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果有人有asp.net解决方案(想法让我听到他们),N级深度嵌套是我现在无法克服的事情.
您可以将您定义TaskList
为部分,并在文档提示时递归包含它.
模板:
<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>
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
这是jsFiddle在行动中看到它 - http://jsfiddle.net/maxbeatty/ND7xv/
归档时间: |
|
查看次数: |
683 次 |
最近记录: |