在初始页面上的模板中渲染javascript加载meteorjs

时间:2013-09-27 20:02:52

标签: google-api meteor

我正在尝试从google chart 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()调用google可视化命令。我知道我现在可能正在调用一些重复的代码,但所有这些都是为了让我在点击刷新时加载页面。

我感谢任何帮助。

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

1 个答案:

答案 0 :(得分:1)

Google jsapi 文件放在 main.html 标题中会导致浏览器运行< DOM 完全加载后,强> Javascript ,这对您来说已经太晚了。

DOM 完全呈现之前,

Meteor 正在调用您的google.load代码,因此点击刷新页面时, Meteor 调用google.load时, jsapi 文件未定义。

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

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

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