gpt4 book ai didi

gwt - 如何用我的 GWT 小部件替换元素?

转载 作者:行者123 更新时间:2023-12-04 02:18:00 25 4
gpt4 key购买 nike

有没有可能替换 已知 html 元素与我的小部件组件? (强调“替换”这个词,我不想将小部件 放在 那个元素中。:)

<body>
<img />
<div />
<a id="tmpEl" />
...
<img />
</body>

会成为
<body>
<img />
<div />
<div class="gwt-panel">...</div>
...
<img />
</body>

我尝试过这样的事情......
tmpEl.getParentElement().replaceChild(myPanel.getElement(), tmpEl);

...但是生成的 DOM 元素是“聋的”,即它们没有收到点击事件。 (要完成这项工作,我可能必须调用 RootPanel.get().adopt(widget),但该方法不可访问。)

一瞬间我想到了 HTMLPanel.addAndReplaceElement可能是答案,但这仅在您的“占位符”元素是 HTMLPanel 小部件的(直接)子元素时才有效。这显然不是我的情况。 :(

请注意,我只知道该元素的 id,而不是创建它。简单地说:我需要 正是问题所说的 .

至于“更高级别的 DOM 操作”:如果它允许我放置小部件而不是那个占位符元素,我会很乐意在最高级别操作 DOM。

最佳答案

在将小部件插入 DOM 之后调用 widget.onAttach() 似乎可以解决问题。

class MyWidget extends Composite
{
...

public void attach()
{
/* Widget.onAttach() is protected
*/
onAttach();

/* mandatory for all widgets without parent widget
*/
RootPanel.detachOnWindowClose(this);
}
}

tmpEl.getParentElement().replaceChild(myWidget.getElement(), tmpEl);
myWidget.attach();

归功于 Google Web Toolkit group 的 André .

我仍然想知道为什么没有 RootPanel.addAndReplaceElement(Widget, Element),类似于 HTMLPanel.addAndReplaceElement(Widget, Element) .

关于gwt - 如何用我的 GWT 小部件替换元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3075631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com