簡體   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