2

我想像这样包装一个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;
}

但它不起作用。即使你在我的浏览器控制台中也没有任何错误。有人知道如何使它适用于外部回调函数吗?谢谢并恭祝安康。

4

1 回答 1

1

我终于找到了解决方案。看来我的 java 代码与我的 javascript 代码不一致。感谢 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 回调函数的开发人员。

于 2017-06-13T10:39:28.627 回答