我想获得smartgwt小部件的属性,我将其设置为GWT中的方式。 例如在GWT中:
//Button creation
Button btn1 = new Button(" Button 1");
Button btn2 = new Button("Button 2");
Button btn3 = new Button("Button 3");
//setting the attribute to button doms
btn1.getElement().setAttribute("data-tracking", "Button 1 clicked");
btn2.getElement().setAttribute("data-tracking", "Button 2 clicked");
btn3.getElement().setAttribute("data-tracking", "Button 3 clicked");
//Global handler to catch all the event in my application
Event.addNativePreviewHandler(new NativePreviewHandler() {
public void onPreviewNativeEvent(final NativePreviewEvent event) {
final int eventType = event.getTypeInt();
switch (eventType) {
case Event.ONCLICK:
System.out.println("on clikc clicked"+Element.as(event.getNativeEvent().getEventTarget()).getAttribute("data-tracking"));
//getting the button attribute
if(Element.as(event.getNativeEvent().getEventTarget()).getAttribute("data-tracking")!=null && !Element.as(event.getNativeEvent().getEventTarget()).getAttribute("data-tracking").equals("")){
googleAnalyticsTrackPageView(Element.as(event.getNativeEvent().getEventTarget()).getAttribute("data-tracking"));
}
break;
}
}
});
但是在SmartGWT中,我无法设置/获取此属性。有没有办法解决这个问题? 我们要求将谷歌分析添加到我们的应用程序,但我们面临的问题是无法设置属性。 想要在小部件中添加一些自定义属性,例如(单击选项卡/点击应用程序内的一些帮助图标,很多地方)
Img helpButtonImage = new Img(HELP_ICON);
helpButtonImage.getElement().setAttribute("data-tracking", "help on purchase order");
ButtonItem loginButtonItem = new ButtonItem();
loginButtonItem.setAttribute("data-tracking", "User clicked on login button");
并且需要像上面提到的那样在全局处理程序中捕获。
答案 0 :(得分:0)
来自getElement文档
SmartGWT的正常用法是在SmartGWT小部件上调用draw(),而不是使用RootPanel.add()。开发人员通常不需要为SmartGWT画布实例调用getElement()或setElement()。如果开发人员确实需要访问由绘制的SmartGWT组件创建的DOM元素,则应使用com.smartgwt.client.widgets.Canvas.getOuterElement()和com.smartgwt.client.widgets.Canvas.getContentElement()。有关更多信息,请参阅javadoc以获取这些方法。请特别注意,不应在DOM中直接操作这些元素 - 而应使用标准的SmartGWT API,如draw(),clear(),setContents(),addChild(),redraw()。另请参见com.smartgwt.client.widgets.Canvas.setHtmlElement(Element),了解如何将SmartGWT组件嵌入到现有DOM元素中。 getElement()和setEleent()仅用于支持将SmartGWT小部件添加到核心GWT布局管理器。此用法有限制和警告 - 请参阅此常见问题列表。 getElement()用于与核心GWT集成的机制与com.smartgwt.client.widgets.Canvas.setHTMLElement(Element)所描述的机制相同,并具有相同的警告
所以,一个例子。
IButton button = new IButton("Hello World");
button.setWidth( 400 );
RootPanel.get().add(button);
如果您尝试这样做:
IButton button = new IButton("Hello World");
button.setWidth( 400 );
RootPanel.get().add(button);
button.getContentElement().setAttribute( "style" , "color: white;" );
请注意,IButton来自com.smartgwt.client.widgets.IButton
问候!