2013-02-10 102 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"/> 
相關問題