我遇到了自动生成的Web组件代码问题。 这是一段HTML:
<div id="hidden-ui">
<div id="auth-form" class="...">
...
<to-button></to-button>
</div>
...
</div>
如您所见,有一个名为to-button
的自定义Web组件:
<element name="to-button" constructor="TOSimpleButton" extends="div">
...
</element>
在启动时,我想将#auth-form
从父节点移到文档根目录:
Element af = document.query('#auth-form');
Element db = document.query('BODY');
db.children.add(af);
如果在可移动节点内没有自定义Web组件,那没关系,但在to-button
内部时,我得到运行时RangeError。
这是一段自动生成的代码:
__e1 = __root.nodes[9].nodes[1].nodes[7];
__t.component(new TOSimpleButton()..host = __e1);
如您所见,组件存在严格的旧路径,因此RangeError异常引发。
我该如何应对?
答案 0 :(得分:2)
听起来你想时不时地显示弹出窗体。这就是我的工作。
我为dialog / popup指定了这个构造函数:
var lifecycleCaller;
DialogFooComponent() {
host = new Element.html('<x-dialog-foo></x-dialog-foo>');
lifecycleCaller = new ComponentItem(this)
..create();
document.body.children.add(host);
lifecycleCaller.insert();
}
正如您所看到的,我将其添加到文档正文中。但是,这仅在创建新实例时发生。
每当我需要显示该弹出窗口时,我都有这样的代码:
import '../dialog/foo/foo.dart';
...
// Later at some point I do:
new DialogFooComponent();
发生的事情是,只要你愿意,你就会在身体中出现弹出窗体。
如果要关闭对话框,可以在对话框组件中调用它:
lifecycleCaller.remove();
答案 1 :(得分:0)
如上所述here,这不会在WebUI包中修复,而是在 Polymer 中修复。
这不会在web_ui pkg中修复。它应该在聚合物pkg中起作用。