繁体   English   中英

GWT和Javascript

[英]GWT and Javascript

无法从GWT java类中的javascript调用javamethod。

请从下面找到代码片段。

package abc;

public class jsclass extends Composite {

public native boolean getOnlineSchedlueResult() /*-{

    function listener(event) {

    //alert("getOnlineScheduleResult called 2 Outside");
     var data = JSON.parse(event.data);
     if(data.FinderSuccess == true){
        parent.onlineMoveNavigation = this.@abc.jsclass::onlineMoveNavigation()();
     }
  }

  if (parent.addEventListener){
        //alert("parent getOnlineScheduleResult called 3");
        parent.addEventListener("message", listener, false);
        //alert("getOnlineScheduleResult called 3A");
        parent.postMessage("test", "*");
 } else {
        //alert("getOnlineScheduleResult called 4");
        parent.attachEvent("onmessage", listener);
        parent.postMessage("test", "*");
 }

}-*/;

    public void onlineMoveNavigation(){
        GWT.log("onlineMoveNavigation called");
        presenter.moveNavigationNext();
    }

}

当浏览器调用listener器时, this关键字不会对您的jsclass实例求值。
您必须 jsclass实例绑定到可以从listener功能/闭包中引用的变量。

var self = this;

function listener() {
  //alert("getOnlineScheduleResult called 2 Outside");
  var data = JSON.parse(event.data);
  if(data.FinderSuccess == true){
     parent.onlineMoveNavigation = self.@abc.jsclass::onlineMoveNavigation()();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM