从GWT JSNI调用jquery

时间:2011-08-29 21:55:22

标签: java jquery gwt jsni

我是一名没有jquery经验的GWT人。对于那个很抱歉。不幸的是,我遇到了一些我必须在GWT项目中使用的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 个答案:

答案 0 :(得分: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()