0

我发现很难让 JSNI 直接与 Errai 一起工作,例如以下代码:

private static native void _createCallOut(JavaScriptObject callout)/*-{
    $wnd.hopscotch.getCalloutManager().createCallout(callout);
}-*/;

这个 JSNI 在哪里被称为 roothing

@PageShowing
public void onShow() {
                CallOut startCallOut = new CallOut("dashboard", Placement.RIGHT);
                startCallOut.setTitle("Take an example tour");
                startCallOut.setContent("Start by taking an example tour to see GWT-Tour in action!");
                startCallOut.setWidth(240);
                startCallOut.centerXOffset();
                startCallOut.centerArrowOffset();
                GwtTour.createCallOut(startCallOut); // Here!
}

如果第一个参数是手动输入到 GWT 应用程序 HTML 中的 DIV 的 ID,则此 Java 代码CallOut可以正常工作,但如果它在 Errai 的页面模板上,这将不起作用。任何想法为什么它不起作用?

4

2 回答 2

2

在将模板添加到 DOM之前@PageShowing调用生命周期方法。来自JavaDoc:PageShowing

@Page 指示当它所属的小部件即将显示在导航内容面板中时,应调用目标方法:在小部件的@PageState字段已更新之后且在它显示在导航内容面板中之前。

尝试@PageShown改用。

于 2013-07-31T18:11:01.490 回答
1

我设法让它在 or 中工作,但在@PageShowingor内部:@PageShownonAttach@Page

@Override
protected void onAttach() {
      super.onAttach();
      // Works fine inside
    } 
于 2013-08-01T06:47:15.593 回答