使用 GWT JsInterop 实现 Javascript 函数回调
Implement Javascript Function Callback with GWT JsInterop
我想像这样包装 javascript 代码:
map.addMarker({
lat: -12.043333,
lng: -77.028333,
draggable: true,
fences: [polygon],
outside: function(m, f){
alert('This marker has been moved outside of its fence');
}
});
这是我在 Java 中的写法:
@JsType(namespace = JsPackage.GLOBAL, isNative = true, name = "Object")
public class MarkerOptions {
@JsProperty
public double lat;
@JsProperty
public double lng;
@JsProperty
public boolean draggable;
@JsProperty
public Polygon fences;
@JsFunction
public interface FunctionOutsideParam {
void outside();
}
@JsProperty
public FunctionOutsideParam outside;
}
但它不起作用。即使你在我的浏览器控制台中没有任何错误。有人知道如何让它为外部回调函数工作吗?
谢谢和问候。
我终于找到了解决办法。看来我的 java 代码与我的 java 脚本代码不一致。感谢 Colin Alworth 指出不一致的部分。所以这是我的完整代码:
@JsType(namespace = JsPackage.GLOBAL, isNative = true, name = "Object")
public class MarkerOptions {
@JsProperty
public double lat;
@JsProperty
public double lng;
@JsProperty
public boolean draggable;
@JsProperty
public Polygon[] fences;
@JsFunction
public interface FunctionOutsideParam {
void outside(Marker m, Polygon[] f);
}
@JsProperty
public FunctionOutsideParam outside;
}
现在,每当我 运行 它时,都会正确调用外部函数回调。感谢大家。我希望我的回答可以帮助许多其他试图弄清楚如何使用 GWT JSInterop 实现 js 回调函数的开发人员。
我想像这样包装 javascript 代码:
map.addMarker({
lat: -12.043333,
lng: -77.028333,
draggable: true,
fences: [polygon],
outside: function(m, f){
alert('This marker has been moved outside of its fence');
}
});
这是我在 Java 中的写法:
@JsType(namespace = JsPackage.GLOBAL, isNative = true, name = "Object")
public class MarkerOptions {
@JsProperty
public double lat;
@JsProperty
public double lng;
@JsProperty
public boolean draggable;
@JsProperty
public Polygon fences;
@JsFunction
public interface FunctionOutsideParam {
void outside();
}
@JsProperty
public FunctionOutsideParam outside;
}
但它不起作用。即使你在我的浏览器控制台中没有任何错误。有人知道如何让它为外部回调函数工作吗? 谢谢和问候。
我终于找到了解决办法。看来我的 java 代码与我的 java 脚本代码不一致。感谢 Colin Alworth 指出不一致的部分。所以这是我的完整代码:
@JsType(namespace = JsPackage.GLOBAL, isNative = true, name = "Object")
public class MarkerOptions {
@JsProperty
public double lat;
@JsProperty
public double lng;
@JsProperty
public boolean draggable;
@JsProperty
public Polygon[] fences;
@JsFunction
public interface FunctionOutsideParam {
void outside(Marker m, Polygon[] f);
}
@JsProperty
public FunctionOutsideParam outside;
}
现在,每当我 运行 它时,都会正确调用外部函数回调。感谢大家。我希望我的回答可以帮助许多其他试图弄清楚如何使用 GWT JSInterop 实现 js 回调函数的开发人员。