Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 在图布局中需要子组件元素DOM维度的情况下,是否可以使用Ember渲染有向无环图?_Ember.js_Directed Acyclic Graphs - Fatal编程技术网

Ember.js 在图布局中需要子组件元素DOM维度的情况下,是否可以使用Ember渲染有向无环图?

Ember.js 在图布局中需要子组件元素DOM维度的情况下,是否可以使用Ember渲染有向无环图?,ember.js,directed-acyclic-graphs,Ember.js,Directed Acyclic Graphs,我试图使用余烬来呈现一个有向无环图。在主干中,我能够将子组件视图(节点)渲染到DOM中,获取它们的尺寸(.height(),.width()),然后在图形布局算法中使用这些信息,然后以这样的方式重新渲染父组件:所有子组件都将获得它们的新(x,y)位置并转换到位。在布局算法中输入高度/宽度非常重要,因为如果没有这些信息,就无法为节点提供足够的空间来避免重叠。让DOM提供这些信息很好,因为它允许浏览器本身使用良好的ol'HTML布局格式化图形节点 余烬似乎是一个自然适合做这样的事情,但这是我的问题。

我试图使用余烬来呈现一个有向无环图。在主干中,我能够将子组件视图(节点)渲染到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中创建一个简化的失败演示吗?