[英]How to pass a GWT method as a parameter into a Javascript function?
總覽
private void handleError()
private native void registerErrorHandler()
foo.attachEvent("EventName", handlerReference);
功能性
我需要將GWT方法作為函數參數傳遞給foo.attachEvent()
函數,我嘗試了幾種方法:
foo.attachEvent("Error", registerErrorHandler);
-> TypeMismatchException
foo.attachEvent("Error", this.@package.foo::registerErrorHandler());
-> TypeMismatchException
var handler = this.@package.foo::registerErrorHandler()();
foo.attachEvent("Error", handler);
-> TypeMismatchException
純Javascript
當我用普通的Javascript編寫代碼時,它可以正常工作:
function handleError() {
alert("Error");
}
function registerErrorHandler() {
var event = "Error";
var handler = handleError;
foo.attachEvent (event, handler);
}
如何在GWT中實現呢? 我在完全理解Javascript-Java Objects轉換時遇到很多問題。 我將handleError
函數引用理解為JavaScriptObject
,但無法使其與該信息一起使用。
您的代碼需要看起來像這樣:(只有一次大括號,因此該函數未執行...)
var handler = this.@package.foo::registerErrorHandler();
foo.attachEvent("Error", handler);
但是您還想做的是將函數包裝在$ entry函數中,以便未捕獲的異常處理程序可以工作:
var handler = this.@package.foo::registerErrorHandler();
foo.attachEvent("Error", $entry(handler));
您始終可以做的是構建一個直接調用gwt函數的js函數:
var that = this;
var handler = function(){
that.@package.foo::registerErrorHandler()();
};
foo.attachEvent("Error", $entry(handler));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.