2013-09-27 2 views
1

Я пытаюсь загрузить диаграмму из диаграмм Google api. По большей части он работает так, как планировалось. Проблема возникает при загрузке начальной страницы. Если я перемещаюсь с другой части моего сайта на страницу (используя маршрутизатор), он загружается отлично. Однако, если я нажму кнопку обновления на странице, график не загрузится, пока я не уйду и не перейду на страницу.Оказание javascript в шаблоне на начальной странице load meteorjs

У меня есть это в моем заголовке main.html:

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

и в моем template.templatename.rendered И template.templatename.created У меня есть

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

Где DrawChart() вызывает команды визуализации google. Я понимаю, что я, вероятно, назову некоторый повторяющийся код в настоящее время, но все это делается для того, чтобы загрузить страницу, когда я нажимаю обновление.

Я ценю любую помощь.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Благодарю.

+0

Почему вы не используете функцию шаблона renderd? – crapthings

+0

И маршрутизатор должен иметь после обратных вызовов, которые вы можете поместить в drawChart() – crapthings

ответ

1

Размещение Google JSAPI файл в main.html заголовок заставит браузер запустить Javascript после DOM полностью загружена, что слишком поздно для ваших целей.

Метеор звонит google.load код перед DOM полностью оказанной, поэтому, когда вы нажмете обновления страницы, файл JSAPI не определен, когда Метеор звонки google.load.

Однако, если вы уйдете, а затем назад, DOM уже загружен один раз, так что график будет оказана правильно.

Чтобы решить эту проблему, я бы предложил просто сохранить локальную версию http://www.google.com/jsapi в вашей папке клиента.

Таким образом, Meteor загрузит его до того, как он называет код google.load.

Смежные вопросы