Google api 在初始页面加载时在模板中呈现javascript

Google api 在初始页面加载时在模板中呈现javascript,google-api,meteor,Google Api,Meteor,我正在尝试从GoogleCharts api加载图表。在很大程度上,它是按计划运作的。问题出现在初始页面加载时。如果我从我网站的另一部分导航到页面(使用路由器),它可以正常加载。但是,如果我点击页面上的刷新按钮,图表在我离开并重新进入页面之前不会加载 我的main.html标题中有以下内容: <script type="text/javascript" src="http://www.google.com/jsapi"></script> 其中drawChart()调用

我正在尝试从GoogleCharts api加载图表。在很大程度上,它是按计划运作的。问题出现在初始页面加载时。如果我从我网站的另一部分导航到页面(使用路由器),它可以正常加载。但是,如果我点击页面上的刷新按钮,图表在我离开并重新进入页面之前不会加载

我的main.html标题中有以下内容:

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
其中drawChart()调用google可视化命令。我知道我现在可能调用了一些重复的代码,但所有这些都是为了在我点击刷新时加载页面

谢谢你的帮助

请让我知道,如果有任何更多的信息需要。谢谢。

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

Meteor正在调用您的
google。在DOM完全呈现之前加载
代码,因此当您点击刷新页面时,Meteor调用
google.load
时,jsapi文件未定义

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

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

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

google jsapi文件放在main.html头中,将导致浏览器在DOM完全加载后运行Javascript,这对于您来说太晚了

Meteor正在调用您的
google。在DOM完全呈现之前加载
代码,因此当您点击刷新页面时,Meteor调用
google.load
时,jsapi文件未定义

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

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


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

为什么不使用template renderd函数?路由器应该有after回调,您可以将drawChart()放入其中为什么不使用template renderd函数?路由器应该有after回调,您可以将drawChart()放入其中
google.load("visualization", "1", {'callback':function() {},packages:["corechart"]});
google.setOnLoadCallback(drawChart);
Deps.autorun(function () { 
             drawChart()
             })