Реализовать функцию обратного вызова Javascript с помощью 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;
}

Но это не работает. Даже если в консоли браузера не было ошибок. Кто-нибудь знает, как заставить это работать для внешней функции обратного вызова? Спасибо и всего наилучшего.

1 ответ

Решение

Я наконец нашел решение. Похоже, что мой код Java несовместим с моим кодом JavaScript. Спасибо Колину Алворту за то, что он указал мне на противоречивую часть. Итак, вот мой полный код:

@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;
}

Теперь всякий раз, когда я запускаю его, обратный вызов внешней функции вызывался правильно. Спасибо всем. Я надеюсь, что мой ответ может помочь многим другим разработчикам, которые попытались выяснить, как реализовать функцию обратного вызова js с помощью GWT JSInterop.

Другие вопросы по тегам