Ember.js 在图布局中需要子组件元素DOM维度的情况下,是否可以使用Ember渲染有向无环图?
我试图使用余烬来呈现一个有向无环图。在主干中,我能够将子组件视图(节点)渲染到DOM中,获取它们的尺寸(.height(),.width()),然后在图形布局算法中使用这些信息,然后以这样的方式重新渲染父组件:所有子组件都将获得它们的新(x,y)位置并转换到位。在布局算法中输入高度/宽度非常重要,因为如果没有这些信息,就无法为节点提供足够的空间来避免重叠。让DOM提供这些信息很好,因为它允许浏览器本身使用良好的ol'HTML布局格式化图形节点 余烬似乎是一个自然适合做这样的事情,但这是我的问题。我有以下资料:Ember.js 在图布局中需要子组件元素DOM维度的情况下,是否可以使用Ember渲染有向无环图?,ember.js,directed-acyclic-graphs,Ember.js,Directed Acyclic Graphs,我试图使用余烬来呈现一个有向无环图。在主干中,我能够将子组件视图(节点)渲染到DOM中,获取它们的尺寸(.height(),.width()),然后在图形布局算法中使用这些信息,然后以这样的方式重新渲染父组件:所有子组件都将获得它们的新(x,y)位置并转换到位。在布局算法中输入高度/宽度非常重要,因为如果没有这些信息,就无法为节点提供足够的空间来避免重叠。让DOM提供这些信息很好,因为它允许浏览器本身使用良好的ol'HTML布局格式化图形节点 余烬似乎是一个自然适合做这样的事情,但这是我的问题。
{{parent-component nodes=nodes}}
{{node-layer nodes=nodes }}
...
{{#each nodes as |node|}}
{{node-view height=node.height width=node.width position=node.position}}
{{/each}}
...
{{/node-layer}}
{{/parent-component}}
我唯一可以获取叶组件(节点)高度/宽度的时间是在节点组件中的didInsertElement
或didRender
调用上。那很好。我可以通过多种方式将此信息传递回父组件,并将其传递到布局算法中。问题是,任何重新呈现父组件的方法,例如新位置将向下延伸到子组件,都将作为子组件的didInsertElement
render hook循环产生的调用堆栈的一部分发生,余烬会抱怨和/或我会完全冻结浏览器和无尽的渲染循环
有人能想出一个模式,用余烬来做我想做的事吗?一个不涉及对抗框架或一些黑客的工具?你能在emberjs.jsbin.com中创建一个简化的失败演示吗?你能在emberjs.jsbin.com中创建一个简化的失败演示吗?