2016-12-10 16 views
0

Я хочу получить атрибут виджета smartgwt, который я устанавливаю, как в GWT. Например, в GWT:Как настроить пользовательский атрибут для SmartGWT Widget

//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, я не был в состоянии установить/получить этот атрибут. Есть ли способ решить эту проблему? У нас есть требование добавить Google Analytics в наши приложения, но проблема, с которой мы сталкиваемся, не может установить атрибут. хотите добавить пользовательский атрибут виджета, где когда-либо его требуется, например (по щелчку вкладок/щелкая на некоторой помощи иконки внутри приложения, много места)

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

От getElement документации

Нормальное использование SmartGWT является вызов рисовать() на виджетах SmartGWT, а не использовать использование RootPanel.add(). Разработчикам обычно не нужно вызывать getElement() или setElement() для экземпляров холста SmartGWT. Если разработчикам необходимо получить доступ к элементам DOM, созданным нарисованным компонентом SmartGWT, они должны использовать com.smartgwt.client.widgets.Canvas.getOuterElement() и com.smartgwt.client.widgets.Canvas.getContentElement(). См. Javadoc для этих методов для получения дополнительной информации. Обратите внимание, что эти элементы не должны непосредственно обрабатываться в DOM - вместо этого должны использоваться стандартные API SmartGWT, такие как 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 (элемент) и имеет те же предостережения

Так, пример.

IButton button = new IButton("Hello World"); 
button.setWidth(400); 
RootPanel.get().add(button); 

результат этого: enter image description here

Если вы попробуете это:

IButton button = new IButton("Hello World"); 
button.setWidth(400); 
RootPanel.get().add(button); 
button.getContentElement().setAttribute("style" , "color: white;"); 

результат: enter image description here

Обратите внимание, что IButton от com.smartgwt.client.widgets.IButton

С уважением!

+0

Спасибо за ваш ответ .. но мой запрос здесь задает какой-то пользовательский атрибут для виджета/компонента smartgwt, и то же самое можно извлечь, поймав какое-то событие .. это возможно? –