假设我有一个Action
对象列表,它对应于 Ember 模型。每个都有几个属性(时间戳)和一个detail
属性,可以递归地包含更多detail
的s(任意深度嵌套)。您可以将详细信息视为嵌套列表。
我想编写一个 UI,允许detail
对任何Action
对象进行轻松编辑(自动完成值、轻松复制和粘贴、重新排序元素等)。
现在,我的DetailView
模板将递归地渲染额外DetailView
的 s:
{{#if view.content.hasChildren}}
{{#each child in view.content.children}}
{{#DetailView contentBinding=child}}
{{/each}}
{{#else}}
{{#EditDetailView contentBinding=view.content.value}}
{{/if}}
所以每个DetailsView
对应于Details对象树中的一个节点。
但我不清楚如何将控制器添加到组合中——我需要存储其他状态/实现功能(例如,转换 Detail 对象中的值以在 DetailsView 中显示;处理插入/删除/重新排序元素的事件;更改详细信息树的结构)既不属于模型也不属于视图。
理想情况下,我将有一个DetailsController
作为代理的Details
per DetailsView
。我可以动态实例化控制器并在视图模板中设置它们的内容吗?我对新 Ember 路由器的理解是在给定的路由中设置控制器和插座;但是,这似乎不适用于这里,因为根本没有进行路由。欢迎所有关于如何处理递归控制器/视图/路由的建议/见解。
我已经查看了EmberJS Nested Views and Controllers,但这表明我ArrayController
对所有Detail
s 都有一个,甚至跨Action
s ......这也不会保留嵌套细节的树结构。
在升级到 Ember 0.9.6 后,我还查看了把手模板中的递归视图不起作用,但该解决方案没有说明任何关于控制器的内容。