我目前有一个小部件,它通过订阅从数据库中获取数百个文档,然后继续侦听新文档,因此它可以更新股票图表。
有一个问题很严重,每次更新数据时图表都会更新,这会导致重绘。
这是一个问题,因为它在开始时调用重绘数百次甚至很难,只需要“获取所有数据然后绘制并等待更新”,更新将不会经常发生,所以那就没关系重绘。
我目前的代码:
Template.nwidget.onRendered(function() {
return this.autorun(function() {
var data;
data = {};
data = Data.find({
type: 'my_type'
});
data = data.fetch();
return update(data);
});
});
答案 0 :(得分:3)
在数据订阅之后做一些事情你可以这样做:
Meteor.subscribe( 'collection', {
onStop: function( error /* optional */ ) {
// when the sub terminates for any reason,
// with an error argument if an error triggered the stop
},
onReady: function() {
// when ready
}
});
如果您想在数据描述后呈现页面,那么您可以在路由器中添加waitOn。
还有一种方法可以检查订阅的准备情况。如果订阅尚未准备好,您可以显示其他内容,例如加载屏幕。
var handle = Meteor.subscribe( 'collection');
Tracker.autorun(function() {
if (handle.ready())
//write whatever you want to do here.
});
对于视图中的自动更新,您可以将日期存储在反应性事物中,它可能是反应性变量,会话或集合。 然后你可以从帮助器返回值来查看。这将自动更新您的视图。