当我使用 JsniBundle 初始化 d3.js 和 dc.js 时,没有创建全局变量“dc”或“d3”。但是我以相同的方式初始化交叉过滤器并且存在 window.crossfilter 。
我的问题是:使用 JsniBundle 从 dc 库调用方法的最佳方法是什么?是否使用JsUtils.prop(window, "dc")
正确的方法来获取对库对象的引用?
在下面的方法 drawBarChartWidget() 中,变量“dc”为空。
public interface D3Bundle extends JsniBundle {
@LibrarySource("d3.js")
public void initD3();
}
public interface CrossfilterBundle extends JsniBundle {
@LibrarySource("crossfilter.js")
public abstract void initCrossfilter();
}
public abstract static class DCBundle implements JsniBundle {
@LibrarySource("dc.js")
public abstract void initDC();
public void drawBarChart(Widget container, JSONValue data, Properties chartConfig) {
JavaScriptObject dc = JsUtils.prop(window, "dc");
}
}
LayoutPanel layoutPanel = new LayoutPanel();
SimplePanel chartPanel = new SimplePanel();
public ChartDemo() {
D3Bundle d3 = GWT.create(D3Bundle.class);
CrossfilterBundle crossfilter = GWT.create(CrossfilterBundle.class);
final DCBundle dc = GWT.create(DCBundle.class);
d3.initD3();
crossfilter.initCrossfilter();
dc.initDC();