2012-04-13 11 views
3

Ich bin vor ein paar Monaten in die gwt-Welt getaucht und versuche nun, die gwt-Query-Bibliothek zu benutzen. Ich folgte diesem Tutorial: http://code.google.com/p/gwtquery/wiki/GettingStarted Da ich in Modle-View-Presenter arbeite, habe ich versucht, das obige Tutorial in meiner Ansicht (das an die ..View.ui.xml gebunden ist) zu implementieren, aber es dosent scheint zu arbeiten.Gwt-Abfrage funktioniert nicht für meinen MVP.

Ich habe versucht, die Schaffung eines Label, und führen Sie den Code:

Liste allGwtLabels = $ ("GWT-Labels.") Widgets();.

aber es wählt nichts aus!

Ich glaube, ich habe irgendwie zeigen, wo ich die qwtQuery wollen für die Widgets (Punkt meiner spezifischen ui.xml Datei)

Was suchen mache ich falsch?

Vielen Dank im Voraus. Unten ist mein Code meines Presenter + View + xml, die Arbeit dosent:

//================================Presenter=================================: 

public class QueryPresenter extends 
     Presenter<QueryPresenter.MyView, QueryPresenter.MyProxy> { 

    public interface MyView extends View { 
    } 

    @ProxyCodeSplit 
    @NameToken(NameTokens.query) 
    public interface MyProxy extends ProxyPlace<QueryPresenter> { 
    } 

    @Inject 
    public QueryPresenter(final EventBus eventBus, final MyView view, 
      final MyProxy proxy) { 
     super(eventBus, view, proxy); 
    } 

    @Override 
    protected void revealInParent() { 
     RevealRootContentEvent.fire(this, this); 
    } 

    @Override 
    protected void onBind() { 
     super.onBind(); 
    } 
} 

//====================================View============================================: 

public class QueryView extends ViewImpl implements QueryPresenter.MyView { 

    private final Widget widget; 

    public interface Binder extends UiBinder<Widget, QueryView> { 
    } 

    @Inject 
    public QueryView(final Binder binder) { 
     widget = binder.createAndBindUi(this); 

     List<Widget> allGwtLabels = $(".gwt-Label").widgets(); //Doesn't Work!! 


     //Also doesn't work!! 
     Label label = new Label("Click on me and I will disappear"); 
     $(label).click(new Function() { 
      @Override 
      public void f(Widget w) { 
       //fade out the label 
       $(w).fadeOut(1000); 
      } 
     }); 
     _html.add(label); 
     //retrieve all attached gwt labels 



    } 

    @Override 
    public Widget asWidget() { 
     return widget; 
    } 
    @UiField Label _label; 
    @UiField HTMLPanel _html; 
} 

//==================xml file=============================== 

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    xmlns:g='urn:import:com.google.gwt.user.client.ui' 
    ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' 
    ui:generateKeys='com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator' 
    ui:generateLocales='default'> 

    <g:HTMLPanel ui:field="_html"> 
     <script type="text/javascript" language="javascript" src="gquerytest/gquerytest.nocache.js"></script> 

    <g:Label text="hey" ui:field="_label"/> 
    </g:HTMLPanel> 
</ui:UiBinder> 
+0

Danke. Es funktioniert für die List allGwtLabels = $ (". Gwt-Label", Widget) .widgets(); Aber ich bin immer noch nicht in der Lage, diese Arbeit zu machen: $ (label, _html) .click (neue Funktion() { \t \t \t @Override \t \t \t public void f (Widget w) { \t \t \t \t // verblasst aus der Bezeichnung $ (w, _html) .fadeOut (1000); \t \t \t} \t \t}); – Michael

Antwort

2

try: Liste allGwtLabels = $ ("GWT-label", widget) .widgets();

Sie müssen den Container Ihrer Elemente angeben, da die Elemente nicht an das Dom angehängt sind, wenn Sie versuchen, sie abzufragen.

+0

Ich habe es geschafft, dies mit gwt clickHandler zu tun. Aber ist es "sauber" oder sollte ich es behalten und versuchen, dies mit der Gnuery-Click-Methode zu machen? Dies funktioniert: label.addClickHandler (neu clickhandler() { \t \t \t \t \t \t @Override \t \t \t public void onClick (ClickEvent event) { \t \t \t \t $ (Label) .fadeOut (1000); \t \t \t} \t \t}); – Michael

+0

_html.add (Label); $ (Label) .click (neue Funktion() { public void f() {// fade out das Etikett $ (Label) .fadeOut (1000); } }); Sollte funktionieren – jdramaix