【问题标题】:Using d3 script in GWT application using JSNI在使用 JSNI 的 GWT 应用程序中使用 d3 脚本
【发布时间】:2012-03-21 23:11:50
【问题描述】:

我正在尝试将 d3 脚本集成到 gwt web-app 中。但是我无法弄清楚如何从 JSNI 运行 d3。 d3 代码单独运行良好;我想知道这可能是因为 d3 代码无法访问 div 元素?
这是我遵循的方法:
+ 在主 html 文件头中添加“脚本”标签,以指定 d3 库
+ 将以下 d3 代码放入方法中,使用 JSNI,并在 onModuleLoad() 中调用该方法。 d3 代码访问主 div 元素,rootPanel 也在使用该元素。

/*-{

    var w = 960, h = 800;
    var svg = d3.select("#chart2")
        .append("svg:svg")
        .attr("width", w)
        .attr("height", h)
        .append("svg:g")
        .attr("transform", "translate(40, 0)");

        svg.selectAll("circle")
            .data([ 32, 57, 112, 293 ])
            .enter()
            .append("circle")
            .attr("cy", 90)
            .attr("cx", String)
            .attr("r", Math.sqrt);

}-*/; 

我也尝试了另一种方法;我在 Java 类的 HTML 元素中添加了另一个 div 元素,并尝试从 d3 访问第二个 div。

在这两种情况下都没有出现。知道它是如何工作的吗?

【问题讨论】:

    标签: gwt jsni d3.js


    【解决方案1】:

    我整理了一个如何将 d3 集成到 GWT 中的简短示例:

    https://github.com/lgrammel/d3_gwt

    基本上,您可以使用以下方法将 Java 对象转换为 JavaScript 对象 JSNI 并将它们传递给 JavaScript 方法 包含 d3 代码:

    https://github.com/lgrammel/d3_gwt/blob/master/src/de/larsgrammel/d3_gwt/client/D3_gwt.java

    https://github.com/lgrammel/d3_gwt/blob/master/war/d3_vis.js

    【讨论】:

      【解决方案2】:

      你有read the docs on JSNI吗?

      对于初学者:

      1. 你应该include external JS dependencies via the module *.gwt.xml 文件。
      2. 通过 $wndthis 变量正确引用库的范围。

      这里不是百花齐放的 JS,你需要遵守他们的 JSNI 文档中的规则。请参阅 many tutorials 中的 one,了解 JSNI 库的内容。

      【讨论】:

      • 阿门。 @Ehsan 请参阅此reference on overlay types 以获取快速、实用的教程。
      • 非常感谢您提供的有用信息。我会关注 cmets 并用结果更新帖子。
      【解决方案3】:

      除了前面所说的,您还可以查看GWT wrapper for Protovis
      d3.js 和 protovis 的设计类似principles(都是Mike Bostock开发的)

      所以你可以从 protovisGWT 包装器中获得很多想法,也许你甚至可以为 d3.js 实现一个 GWT 包装器。

      【讨论】:

      • 非常感谢您的帮助。我会关注 cmets 并用结果更新帖子。
      【解决方案4】:

      一个很晚的答案...
      但是this 项目也许是你想要的:

      它是d3.js 的 GWT 包装器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多