我正在尝试将自定义 javascript 库与我的 SmartGWT 项目集成。
我的页面区域是通过按钮单击动态加载的,因此在 Java 代码中我有类似以下伪代码的内容:
button . onClick {
contextArea = new contextAreaTypeA()
}
所以我的 contextAreaTypeA 被创建并且在构造函数中我想创建一系列 div 元素,为它们分配 ID,然后在我的自定义库中调用一个函数,它将内容加载到这些 div 中。
SmartGWT 摆脱了获取 ID 或在页面中的任何元素上设置 ID 的任何方式,要在元素上创建 ID,您必须创建自己的小部件并覆盖getInnerHtml
或创建类似于 HTMLFlow 的内容并添加类似的myflow.setContent('<div id="myID" ></div>');
内容我正在做。
我的问题是,在构造函数中执行此操作意味着当我调用带有 ID 的自定义 javascript 函数时,我创建的这个 div 似乎还没有附加到 dom,所以我总是得到一个空指针。
由于我的模块和文档已经加载并且此内容正在动态添加,因此我无法调用文档就绪或 onModuleLoad,所以我应该如何以及何时检测我的 div 的负载以及何时可以安全地从内部访问 div JSNI 调用?
我尝试了多种方法,例如添加附加处理程序(它们似乎从未被调用),我尝试向 HTMLFlow 添加绘制处理程序,但它们似乎在绘制 htmlflow div 之后但在实际绘制内容之前被调用。我曾尝试在 HTMLFlow() 上调用重绘,但这似乎根本没有调用 onDraw 方法。
我不知道如何将这个库与我的 SmartGWT 集成,如果有人能提出更好的(或任何)方法来做这件事,那就太好了。