2012-06-15 6 views
1

Я пытаюсь использовать метеорит для получения обновлений диаграмм с помощью системы Google Maps. Так что я делаю, так это то, что я создаю коллекцию, а затем поставляю ее в «данные» диаграммы google (например, круговая диаграмма). Проблема в том, что код javascript для графиков Google работает только в теге, и поэтому я не могу использовать простой соблазн Meteor, который работает только в. так, что я делаю то, что я поставил следующий код в головную часть моего HTML:Meteor и google charts

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

     // Load the Visualization API and the piechart package. 
     google.load('visualization', '1.0', {'packages':['corechart']}); 
    </script> 
and then in Meteor.startup in Meteor.is_client i call : 
google.setOnLoadCallback(drawChart); 
in drawChart the data is defined as follow: 

var data = new google.visualization.DataTable(); 
     data.addColumn('string', 'Topping'); 
     data.addColumn('number', 'Slices'); 
     data.addRows([ 
      ['Mushrooms', 3], 
      ['Onions', 1], 
      ['Olives', 1], 
      ['Zucchini', 1], 
      ['Pepperoni', 2] 
     ]); 

кормит addRows данных с данными, которые я получаю от моей коллекции. Но когда я пытаюсь добавить данные к нему с помощью клиентской стороны mongo, он не обновляется автоматически. Он просто появляется, когда я обновляю страницу. Есть ли у вас какие-либо идеи, как я могу узнать об изменениях в моей коллекции, а затем Rerender my chart в режиме реального времени на основе изменений в моей коллекции Mongo? thx.

ответ

1

Я предлагаю вам вручную подписаться на сбор и подавать данные на диаграмму google при изменении.

См. Meteor.subscribe(). Затем я думаю, что вы можете обнаружить изменения через третий аргумент, функцию callback onComplete, которую вы сами определяете. Я считаю, что данные, переданные этой функции при изменении данных на сервере, указывают, были ли данные добавлены, удалены, изменены или изменены. В этой функции onComplete вы затем обновите диаграмму google.

Удачи.

+0

Я пробовал это со следующим кодом. – user1458025

+0

Не удалось найти код, следуя приведенной ссылке. Но я прочитал, что вы нашли решение (http://stackoverflow.com/a/11062767/95008). – Spiralis

0

Хорошо. Я нашел решение. Spilaris, то, что вы сказали, вызывается только один раз, когда подписка завершается. Мне нужно было наблюдать db за изменения.

+0

Ах. Понимаю. Может быть, вы можете предоставить код, в котором вы оказались, как образец для других, борющихся с тем же? – Spiralis