0

经过数小时的搜索和尝试,我决定在这里问。

JqmHeader.java

public class JqmHeader extends ComplexPanel {

    public JqmHeader() {
        setElement(DOM.createDiv());
        getElement().setAttribute("data-role", "header");
    }

    public void add(Widget widget) {
        super.add(widget, getElement());
    }
}

JqmPage.java

public class JqmPage extends ComplexPanel {
    ...

    public JqmPage(String id) {
        setElement(Document.get().createDivElement());
        getElement().setAttribute("data-role", "page");
        getElement().setAttribute("data-url", id);

        RootPanel.get().add(page);
        render(page.getId());
    }

    private native void render(String id) /*-{
        $wnd.$("#" + id).page();
    }-*/;

    ...
}

MyPage.java 扩展了 JqmPage.java

...

JqmHeader header = new JqmHeader();
Button b = new Button("TestButton");

b.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
        Window.alert("TestButton clicked");
    }
});

header.add(b);
this.add(header);

...

我的问题

所以,我的问题是,标题栏中 Button 的 ClickHandler 不会触发。如果我不将按钮添加到标题,而是添加到“RootPage”,例如

this.add(b)

,一切正常。

我认为它必须在于 jquery-mobile 标头实现。有什么解决方法/想法吗?

来自柏林的感谢,亚历克斯

4

2 回答 2

0

如果您想查看用于构建移动应用程序的纯 GWT 解决方案,您可以查看http://www.m-gwt.com

于 2012-06-20T17:28:23.307 回答
0

JQuery Mobile 吞下标头上的事件,因此它们不会传播到 GWT。我在为 jqm4gwt (https://github.com/sksamuel/jqm4gwt) 解决这个问题时所做的是在页面级别有一个通用监听器,然后比较事件源。如果它是标题中的按钮,那么我会手动触发该按钮上的事件。

看看https://github.com/sksamuel/jqm4gwt/blob/master/src/main/java/com/sksamuel/jqm4gwt/JQMPage.java中的 bindHeaderEvents

此外,jqm4gwt 项目可能是一个很好的解决方案,让您不必自己发明所有这些小部件。

于 2012-10-21T18:06:02.640 回答