ClickHandler不会在jquery-mobile header&页脚

时间:2012-06-20 14:13:05

标签: gwt jquery-mobile

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

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不会触发。如果我不将Button添加到标题,而是添加到“RootPage”,如

this.add(b)

,一切正常。

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

感谢柏林, 亚历

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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项目可能是一个很好的解决方案,可以让您自己创建所有这些小部件。