estoy exportando un método GWT a JavaScript nativo de la siguiente manera:Averiguar cuando un módulo de GWT ha cargado
public class FaceBookGalleryEntryPoint implements EntryPoint {
@Override
public void onModuleLoad() {
FacebookGallery facebookGallery = new FacebookGallery();
RootPanel.get().add(facebookGallery);
initLoadGallery(facebookGallery);
}
private native void initLoadGallery(FacebookGallery pl) /*-{
$wnd.loadGallery = function (galleryId) {
[email protected]::loadGallery(Ljava/lang/String;)(galleryId);
};
}-*/;
}
En la página de acogida, que estoy tratando de invocarlo:
<html>
<head>
<title>Facebook image gallery</title>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript" src="/fbg/fbg.nocache.js"></script>
<h1>Facebook gallery test</h1>
<script type="text/javascript">
$(document).ready(function() {
loadGallery('blargh');
});
</script>
</body>
</html>
Desafortunadamente, cuando se invoca la devolución de llamada en documento, la función aún no está definida. Cuando se ejecuta manualmente desde la consola Firebug, la función funciona bien.
Podría realizar algunos sondeos cada 50 milisegundos hasta que encuentre una función definida con ese nombre, pero parece un enfoque horrible.
¿Cómo puedo recibir notificaciones cuando el módulo está cargado y, por lo tanto, cuando la función está disponible?
Gracias, parece interesante - especialmente el bit DeferredCommand. Voy a dar una oportunidad esta noche. –
BTW, con GWT 2.1 debe utilizar Scheduler(). Get(). ScheduleDeferred() –
Gracias por la sugerencia de Scheduler. – vanje