ja eksportowania metody GWT do natywnego kodu JavaScript w następujący sposób:Dowiedzieć się, gdy moduł GWT załadowaniu
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);
};
}-*/;
}
Na stronie gospodarza, staram się ją wywołać:
<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>
Niestety, gdy wywoływany jest document.ready, funkcja nie jest jeszcze zdefiniowana. Po ręcznym uruchomieniu z konsoli Firebug funkcja działa dobrze.
Mogłabym wykonywać niektóre ankiety co 50 milisekund, dopóki nie znajdę zdefiniowanej funkcji o tej nazwie, ale wygląda to na okropne podejście.
Jak mogę otrzymać powiadomienie, gdy moduł zostanie załadowany, a zatem gdy funkcja będzie dostępna?
Dzięki, wygląda interesująco - zwłaszcza trochę DeferredCommand. Dam ci dzisiaj szansę. –
BTW, z GWT 2.1 powinieneś używać Scheduler(). Get(). ScheduleDeferred() –
Dzięki za podpowiedź harmonogramu. – vanje