2011-08-29 79 views
0

我是一個沒有jQuery體驗的GWT人。對於那個很抱歉。不幸的是,我遇到了一些我必須在我的GWT項目中使用的jQuery特性。從GWT JSNI調用jquery

<script type="text/javascript"> 
$(document).ready(function() { 
    zingchart.render({ 
     'id' : 'g1', 
     'width' : 500, 
     'height' : 400, 
     'dataurl' : 'scatter_minimal.txt' 
    }); 
    }); 
</script> 

<div class="g" id="g1"></div> 

在我沙啞的直覺,我要相信

$(document).ready(..) 

應譯爲GWT的onModuleLoad(){ ....},其中onModuleLoad將確保DOM準備好了,如果我叫內onModuleLoad該功能。

但我不認爲以下將是有效的..

private static native void render() /*-{ 
    function() { 
    zingchart.render(
     { 
     'id' : 'g1', 
     'width' : 500, 
     'height' : 400, 
     'dataurl' : 'scatter_minimal.txt' 
     } 
    ); 
    } 
}-*/; 

我將如何代碼的JSNI定義功能,我可以從GWT打電話?

回答

1

如果我正確理解你的問題,你想要做的僅僅是:

private static native void render() /*-{ 
    zingchart.render(
     { 
     'id' : 'g1', 
     'width' : 500, 
     'height' : 400, 
     'dataurl' : 'scatter_minimal.txt' 
     } 
    ); 
}-*/; 

然後你可以從你的GWT代碼中調用render()render是函數本身,當您使用JSNI語法時,GWT已經將它定義爲JavaScript函數。

背景

寫作function() {...}定義了一個匿名函數 - 這是不是你想要的這裏(你不會有任何的方式來參考一下吧,因爲你不通過它的任何地方)。在jQuery中,您直接將該匿名函數傳遞給document.ready()

+0

謝謝,我也這麼認爲。我一直在想,除了是一個普通的舊javascript功能,功能是否是jQuery中的一些功能。 –

+0

從上面的例子中,對於我的場景,我無法掌握對象'zingchart'本身。 – Jess