我正在尝试从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可视化命令。我知道我现在可能正在调用一些重复的代码,但所有这些都是为了让我在点击刷新时加载页面。
我感谢任何帮助。
如果需要更多信息,请告诉我。感谢。
答案 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
代码之前加载它。