我正在尝试使用meteor来使用谷歌图表系统获取图表更新。所以我所做的是创建一个集合,然后将其提供给谷歌图表的“数据”(例如饼图)。 问题是谷歌图表的JavaScript代码只能在标签中使用,因此我无法使用仅在其中运行的Meteor的简单诱惑。 所以我所做的是我将以下代码放入我的html的主题部分:
<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]
]);
我使用从我的Collection中获取的数据来提供数据的addRows。但是当我尝试使用客户端mongo向其添加数据时,它不会自动更新。它只是在我刷新页面时出现。 你有什么想法我怎么知道我的收藏中的变化,然后根据我的Mongo系列的变化实时重新渲染我的图表? THX。
答案 0 :(得分:1)
我建议您手动订阅该集合,并在更改后将数据提供给Google图表。
请参阅:Meteor.subscribe()。然后我认为您可以通过第三个参数检测更改,这是您自己定义的onComplete回调函数。我相信在服务器上更改数据时传递给此函数的数据表明数据是否已添加,删除,移动或更改。在此onComplete函数中,您将更新Google图表。
祝你好运。答案 1 :(得分:0)
确定。我找到了解决方案。 Spilaris,你所说的只在订阅完成时才调用一次。我需要观察数据库的变化。