帮助通过JSNI调用传递复杂对象以绕过静态作用域
Help passing a complex object via a JSNI call to get around static scope
所以我有一个GWT应用程序,我试图调用一个函数来改变应用程序的视图从外部按钮。通常情况下,它被称为"this. internalfunction ('string')"。问题是JSNI通过静态方法工作,因此所讨论的对象会丢失。解决方案:将应用程序的对象本身传递给JSNI调用,并从那里调用该对象的函数调用!解决方案的问题是:这行不通。(
类看起来像这样:
package blah.package;
public class Foo implements A, B {
public native void initChangeFunc() /*-{
$wnd.jsChangeView = $entry(this.@blah.package.Foo::doSomething
(Lblah.package.Foo;)(this));
//Pass this to the function call to do calls on app object
}-*/;
public void doSomething(Foo obj) {
//Change view here.
obj.internalFunction("parameter");
};
public void internalFunction(String param) {
//Do stuff with param.
}
}
在模块加载时,调用initChangeFunc()并访问页面本身的jsChangeView()。
编译错误提示编译器找不到blah.package。因为我的参数类型签名(Lblah.package.Foo部分)是错误的。
[ERROR] Line 64: Expected a valid parameter type signature in JSNI method reference
首先,尽量不要打断调用Foo::doSomething
的行,并检查它是否有帮助。
相关文章:
- Javascript,从静态函数中打印全局对象
- 使对象保持静态,并且仍然指定和更改它
- 如何将静态数组分配给 Dojo 中的对象
- 如何使用 dedeclare 定义 dojo 静态变量或静态对象
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 三.js - 保持对象相对于相机的位置静态
- 在javascript中美化字符串化对象以在静态HTML页面中提供服务
- 无法访问 JavaScript 对象中的静态变量,该对象对另一个 JavaScript 对象进行子类化
- 在全局对象中定义的类中的 Javascript 静态方法
- 如何实现滑块并替换覆盖对象的静态图像
- 将静态对象转换为动态对象
- JS对象在访问静态时会丢失值(非常奇怪)
- 将hasOwnProperty作为调用方法的直接静态引用进行调用的好处,而不是将其作为对象实例方法进行调用
- JavaScript静态对象创建方法的差异
- 自动递增对象id JS构造函数(静态方法和变量)
- 为什么这个对象声明在node.js中有效,以及如何声明静态变量
- 何时组合通用功能?-带有初始化的公共静态对象
- JavaScript对象返回静态方法和自己作为方法
- 如何访问静态对象的父成员
- 如何静态声明一个属性名(键)包含破折号的Javascript对象实例(关联数组)?