概述
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
,但我无法使用该信息。
答案 0 :(得分:0)
你的代码需要看起来像这样:(只有一次大括号,因此函数没有被执行......)
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));