我是一名没有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调用的函数?
答案 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()
。