2011-08-29 57 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