我试图让JSNI调用等价于这个JavaScript片段:
jQuery(function($) {
$('#target').Jcrop();
});我相信我已经正确导入了库,但是我似乎无法正确地从JSNI调用这个函数。使用下列方法时:
public static final native void initializeJCrop() /*-{
$wnd.jQuery(function($) {
$('#target').Jcrop();
});
}-*/;引发以下异常:
由: com.google.gwt.core.client.JavaScriptException:(TypeError):$(“#.Jcrop”)引起的.Jcrop不是一个函数
我怎么才能解决这个问题?
发布于 2012-05-15 14:35:57
使用JSNI调用外部函数的语法与简单的JavaScript略有不同。
您必须提供完整的包/类引用以及被调用的函数的参数类型/类(因为您的函数没有任何参数,您不必担心)尝试更改调用以包含定义JCrop的包和类。让我们说定义JCrop的类的位置是"api.jcrop“
那你的电话一定是
@api.jcrop::JCrop()() 而不是JCrop()
当然,包名是假设的,您必须检查包含定义的类的正确位置。
这个标志是必要的。jcrop是包含定义的类,JCrop()是函数本身。
JCrop之后的第一个参数表示函数的参数类型,第二个参数提供传递参数的值。就像我说的,在你的案子里都是空的。
如果您感兴趣,可以阅读更多关于参数这里的内容
希望这能解决你的问题
https://stackoverflow.com/questions/10602751
复制相似问题