GWT and Javascript

GWT and Javascript

本文关键字:Javascript and GWT      更新时间:2023-09-26

无法在 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()();
  }
}