2

GWT クラスに次のコードがあります。

private native JavaScriptObject getRequest() /*-{
    var request = ...;

    request.onOpen = function(response) {
this.@com.mdarveau.fnp.client.Client::onOpen(Lcom/mdarveau/fnp/client/Response;)(response);
    };

    return request;
}-*/;

void onOpen( Response response ) {
    Window.alert( "Got response " + response );
}

ただし、関連付けられた関数request.onOpenが呼び出されると、「この変数」はコンパイルされた GWT クラスへの参照に置き換えられません。Chrome JavaScript コンソールとデバッガーを使用すると、オブジェクトへの参照のように見えrequestます。

理由はありますか?jqueryもロードしていますが、競合が発生する可能性はありますか?

4

1 に答える 1

6

了解しました。ネイティブコードでへの参照を取得し、thisそれをfunctionブロックで使用する必要があります。

var theInstance = this;

その後

request.onOpen = function(response) {
    theInstance.@com.mdarveau.fnp.client.Client::onOpen(Lcom/mdarveau/fnp/client/Res‌​ponse;)(response);
};
于 2012-05-05T03:08:08.853 に答える