在我的应用程序中,我有一个名为 block 的项目,它可以包含并包含在其他块项目中。为了简单起见,我们可以说这些块可以无限嵌套。
我想知道是否可以创建与嵌套块相对应的递归视图。每个视图都会呈现为包含其子级并位于其父级DIV
内的DIV
吗?
虽然视图在它们可以包含的内容方面类似,但它们从服务器获得的实际内容可能不同。以下是一个示例数据:
App.blocks.set('content',[
Em.Object.create({title:"One", id:"1", is_inside:"0"}),
Em.Object.create({title:"Two", id:"2", is_inside:"1"}),
Em.Object.create({title:"Three", id:"3", is_inside:"0"}),
Em.Object.create({title:"Four", id:"4", is_inside:"3"}),
Em.Object.create({title:"Five", id:"5", is_inside:"4"})
])
在此示例中,块1将呈现为root(假设0是root,这意味着不在任何其他块内)。第二个块将在第一个块内呈现,依此类推。
我注意到前一段时间已经问过similar question,但我对那里的答案不满意。我觉得必须有一种优雅的方式来实现这一目标。
你能指点我在Ember中如何做到这一点的例子吗?如果没有,任何可以帮助我取得进步并改进我的问题的建议也将非常感激。
编辑:这是a jsFiddle,我用一些初始数据作为起点。希望在您的帮助下,我可以根据 is_inside 关系嵌套DIVs
。我已经更新了帖子以使用这个更简单的例子。
答案 0 :(得分:0)
将此作为提示,我认为layout
的{{1}}属性正在抢救......它的工作方式是这样的
Ember.View
将导致以下html
App.myView = Ember.View.extend({
layoutName: "parent",
templateName: "child"
})
<script type="text/handlebars" data-template-name="parent">
Who's your Daddy ??<br> {{yield}} <br> ######
</script>
<script type="text/handlebars" data-template-name="child">
I'm your son !
</script>
首先对数据建模,然后在js中使用<div id="ember1" class="ember-view">
Who's your Daddy?
<div id="ember-2" class="ember-view">
I'm your son !
</div>
######
</div>
或for
循环来创建视图,我不认为使用Handlebar助手进行递归是一个好主意。
编辑部分 可能有比这更好的方法...但是检查一下,在这里你不是将嵌套限制在一个层次,对吗?
while