Gwt-query 对我的 MVP 不起作用。

标签 gwt user-interface gwtquery

几个月前我进入了 gwt 世界,现在正在尝试使用 gwt-query 库。 我按照这个教程:http://code.google.com/p/gwtquery/wiki/GettingStarted 因为我在 Modle-View-Presenter 中工作,所以我尝试在我的 View 中实现上述教程(绑定(bind)到 ..View.ui.xml),但它似乎不起作用。

我尝试创建一个标签,然后运行代码:

列出所有GwtLabels = $(".gwt-Label").widgets();

但它什么也没选择!

我想我必须以某种方式指出我希望 qwtQuery 搜索小部件的位置(指向我的特定 ui.xml 文件)

我做错了什么?

提前致谢。下面是我的 Presenter + View + xml 的代码,它不起作用:

//================================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>

最佳答案

尝试:列出所有GwtLabels = $(".gwt-Label", widget).widgets();

您必须指定元素的容器,因为当您尝试查询元素时,这些元素并未附加到 dom。

关于Gwt-query 对我的 MVP 不起作用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138269/

相关文章:

gwt - 如何将自动监控/服务集成到 gwt 应用程序中?

java - 使用 MVP 模式

java - 多少类太多了?什么时候适合添加新类?

java - 使用 GwtQuery 绑定(bind)到 DOM 事件

unit-testing - 使用mockito模拟GWT EventBus

php - 消息系统: Save and Send - when to do the INSERT of a new message?

Java Swing FlowLayout 对齐

GwtChosen 不能很好地与 GWT LayoutPanel 和 RootLayoutPanel 配合使用

java - GWT super 开发模式不适用于 GQuery

GWT - 弹出位置