1

我正在尝试从谷歌图表 api 加载图表。在大多数情况下,它按计划工作。问题出现在初始页面加载上。如果我从网站的另一部分导航到页面(使用路由器),它加载正常。但是,如果我点击页面上的刷新按钮,则在我离开并重新进入页面之前,图表不会加载。

我的 main.html 标头中有这个:

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

在我的 template.templatename.rendered AND template.templatename.created 我有

google.load("visualization", "1", {'callback':function() {},packages:["corechart"]});
google.setOnLoadCallback(drawChart);
Deps.autorun(function () { 
             drawChart()
             })

其中 drawChart() 调用谷歌可视化命令。我知道我目前可能正在调用一些重复的代码,但所有这些都是为了在我点击刷新时让页面加载。

我很感激任何帮助。

如果需要更多信息,请告诉我。谢谢。

4

1 回答 1

1

Google jsapi文件放在main.html标头中会导致浏览器在DOM完全加载后运行Javascript,这对您的目的来说太迟了。

Meteor在DOM完全渲染调用你的google.load代码,所以当你点击刷新页面时,当Meteor调用时, jsapi文件是未定义。google.load

但是,如果您离开然后返回,则DOM已经加载过一次,因此图表将正确呈现。

为了解决这个问题,我建议只http://www.google.com/jsapi在您的客户端文件夹中保存一个本地版本。

google.load因此,Meteor 会在调用代码之前加载它。

于 2013-12-19T22:43:30.710 回答