2013-02-10 103 views
2

我有一个GWT应用程序, 如果不可能,我想为每个元素自动添加ID 手动执行此操作的最快方法是什么?如何强制GWT为每个DOM元素添加唯一ID?

+0

你的用例是什么?除非使用外部JavaScript,否则不需要为GWT中的元素添加ID。为每个元素添加id会对性能产生负面影响。 – 2013-02-10 19:40:36

+0

我添加外部JS – ciochPep 2013-02-11 00:12:22

+0

这将如何帮助外部JS?为什么外部JS不能在需要时添加自己的ID? – 2013-02-11 00:16:43

回答

1

是其可能的:

第一种方式:

Button b = new Button(); 
DOM.setElementAttribute(b.getElement(), "id", "my-button-id") 

方式二:

FlowPanel panel = new FlowPanel(); 
panel.getElement().setId("my-flowpanel-id"); 

如果你想要做的分配所有的ID连接到DOM可以做

Iterator<Widget> iterator = RootPanel.get().iterator(); 

while(iterator.hasNext()) { 
    Widget w = iterator.next(); 
    w.getElement().setId("id"); 
} 
+0

我正在寻找一个命令将其全部添加... – ciochPep 2013-02-11 00:12:52

1

您可以创建扩展GWT窗口小部件,并设置一个ID每一个你自己的Widget类:

public class myWidget extends Widget { 

    public myWidget(String id) { 
     super(); 
     getElement().setId("id"); 
    } 

    public void setId(String id) { 
     // Use this method if you use Ui:Binder 
     getElement().setId("id"); 
    } 
} 

可以,很明显,扩展其他类,而不是小工具,如果你并不需要所有的部件编号,如FlowPanel,Button等。

1

如果你想要一个元素始终有一个Id,你可以使用UI Object类的ensureDebugId。它确保你的元素在将它附加到dom之前已经设置了Id。

3

我不太确定性能问题。如何以10-20小部件的形式添加露露ID会导致性能下降?

要自动为小部件设置调试ID,您需要在module.gwt.xml文件中包含以下内容。

<!-- Enable debug ID. --> 
<inherits name="com.google.gwt.user.Debug"/> 
<set-property name="gwt.enableDebugId" value="true"/> 
相关问题