3

我对 Web 组件的自动生成代码有疑问。这是一段HTML:

<div id="hidden-ui">
  <div id="auth-form" class="...">
    ...
    <to-button></to-button>
  </div>
  ...
</div>

如您所见,有一个名为的自定义 Web 组件to-button

<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 异常。

我该如何处理?

4

2 回答 2

2

听起来您想时不时地显示弹出表单。这就是我所做的。

我为对话框/弹出窗口指定了这个构造函数:

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();
于 2013-07-30T10:37:48.957 回答
0

正如这里提到的,这不会在 WebUI 包中修复,但会在Polymer中修复。

这不会在 web_ui pkg 中修复。它应该在聚合物 pkg 中工作。

于 2013-08-02T13:53:49.300 回答