Реализовать функцию обратного вызова 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.