首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$wnd.google.visualization未定义

$wnd.google.visualization未定义
EN

Stack Overflow用户
提问于 2011-03-22 00:09:02
回答 1查看 4.3K关注 0票数 3

我目前正在构建一个基于SmartGWT的web应用程序(使用Portlet布局)。所以我有几个"Portlet",它们基本上是用不同内容扩展GWT窗口。现在我想要一个Portlet来显示Dygraphs。因此,我创建了一个RPC Service实现,它返回一个JSON字符串(基于DataTable对象)。

因为我不能直接序列化我使用DataTable对象

代码语言:javascript
复制
String json = JsonRenderer.renderDataTable(data, true, true).toString();

其中"data“是DataTable类型。

现在,这个字符串被正确地传递到客户端,我想在那里创建Dygraph。在这个thread中,有人建议使用

代码语言:javascript
复制
public static native DataTable toDataTable(String json) 
/-{ return new $wnd.google.visualization.DataTable(eval("(" + json + ")")); }-/;

如果我在我的GWT客户端代码中使用它,我会得到一个错误消息

代码语言:javascript
复制
com.google.gwt.core.client.JavaScriptException: (TypeError): $wnd.google.visualization is undefined

我是否错过了可视化API的一些“导入”?我必须在哪里实例化它?

或者,有没有其他方法可以将JSON数据串放入Dygraph?我找不到任何例子..。

谢谢你的任何提示!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-22 20:55:45

我假设您已经在模块的XML中包含了visualization.jar和可视化名称空间。

代码语言:javascript
复制
<inherits name="com.google.gwt.visualization.Visualization"/>

这将为您提供类。你可能已经这样做了,否则你会得到一个编译器错误。

但是,您还必须包含来自google服务器的实际可视化javascript文件( visualization.jar只是一个包装器)。这可以通过两种不同的方式来完成:

1.)将其包含在主页中:

代码语言:javascript
复制
<script type="text/javascript">
        google.load("visualization", "1", {'packages' : ["corechart"] });
</script>

2.)在您需要的地方动态加载它:

代码语言:javascript
复制
VisualizationUtils.loadVisualizationApi(onLoadCallback, MotionChart.PACKAGE);

请参阅http://code.google.com/docreader/#p=gwt-google-apis&s=gwt-google-apis&t=VisualizationGettingStarted

顺便说一句。我已经派生了Dygraphs项目,并将GWT包装器更改为更像其他可视化包装器。你可以在这里查看:https://github.com/timeu/dygraphs

我有一个新的包装器,它使用GWT2.8的新JsInterop:https://github.com/timeu/dygraphs-gwt

注意:我更改了dygraphs中的一些行为,并添加了一些上游代码中没有的功能。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5380343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档