【问题标题】:switching bw Javascript and GWT function切换 bw Javascript 和 GWT 函数
【发布时间】:2016-01-09 20:35:41
【问题描述】:

我正在使用 GWT 和 d3 开发一个项目。我在 javascript 文件中使用了 d3。让我再解释一下。我在 GWT 中有一个类名 AstForm。在这个类中,我有一个函数,我使用以下代码在我的 javascript 文件中调用它。它的代码对我来说很好。

public  native void PrepareFunctionsForJS() /*-{
$wnd.ExtractOFFNetWork = this.@org.valcri.asstsrchui.client.AstForm::ExtractOFFNetWork(*);
}-*/;
public  void ExtractOFFNetWork(JsArrayMixed args) 
 {
Window.alert("thisCurrent row and Column is " +
        args.getString(0) + "  " + args.getString(1)+"OffenderNetwork?");
}

void testfunction ()
{
Window.alert("testfunction)
}

在java脚本中我使用了以下代码

window.ExtractOFFNetWork(["GWT","JS"]);

我的代码运行良好。我可以在 javascript 文件中调用 ExtractOFFNetWork。但是,当我调用 testfunction 时,问题出在 ExtractOFFNetWork 函数中,该函数也是 ASTFORM 类的成员函数,程序错误说 testfunction 不是函数。但是,当我将 testfunction 更改为静态时,我可以在 ExtractOFFNetWork 中访问此函数。另外,我也可以通过创建一个单独的 ASTForm 对象来使用 ExtractOFFNetWork 中的 testfunction

AstForm my =new AstForm();
my.testfunction();

但是我不想使用静态或单独的 ASTform 对象来访问 ASTForm 的成员函数。我还在 ExtractOFFNetWork 中使用了 this.testfunction() 但它也不起作用。如果有任何机构可以帮助解决我一整天都没有成功的问题,我将不胜感激:)

【问题讨论】:

    标签: javascript gwt static this jsni


    【解决方案1】:

    在调用您的PrepareFunctionsForJS 时已经尝试过这个(顺便说一句,java 命名约定方法名称以小写字母开头..)

    //assuming that you are calling the prepare function from inside the AstForm
    public class AstForm() {
       //...
       PrepareFunctionsForJS(this);
    }
    
    public  native void PrepareFunctionsForJS(AstForm instance) /*-{
        $wnd.ExtractOFFNetWork = instance.@org.valcri.asstsrchui.client.AstForm::ExtractOFFNetWork(*);
    }-*/;
    

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多