Sono esportare un metodo GWT a JavaScript nativo, nel modo seguente:Scoprire quando un modulo GWT è stata caricata
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);
};
}-*/;
}
Nella pagina host, sto cercando di 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>
Sfortunatamente, quando viene richiamato il callback document.ready, la funzione non è ancora definita. Quando viene eseguita manualmente dalla console Firebug, la funzione funziona perfettamente.
Potrei eseguire qualche polling ogni 50 millisecondi finché non trovo una funzione definita con quel nome, ma sembra un approccio orribile.
Come posso ricevere una notifica quando il modulo è caricato e quindi quando la funzione è disponibile?
Grazie, sembra interessante - soprattutto il bit DeferredCommand. Darò questo un colpo stasera. –
BTW, con GWT 2.1 si dovrebbe usare Scheduler(). Get(). ScheduleDeferred() –
Grazie per il suggerimento Scheduler. – vanje