使用 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 回调函数的开发人员。