2016-04-27 1 views
0

私は現在、サブスクリプションを介してDBから何百もの文書を取得し、新しい文書を聴取しているので、株価チャートを更新することができます。レンダリング前にすべてのサブスクリプションデータを取得し、新しいデータを受信したときにDOMを更新するにはどうすればよいですか?

データが更新されるたびにチャートが更新され、再描画が発生するたびに問題が発生します。

これは、開始時に何百もの時間を書き直す必要があるため、「すべてのデータを取得して更新を待つ」必要があるだけなので、更新があまり頻繁ではないので、再描画するのは大丈夫です。

私の現在のコード:

Template.nwidget.onRendered(function() { 
    return this.autorun(function() { 
    var data; 
    data = {}; 
    data = Data.find({ 
     type: 'my_type' 
    }); 
    data = data.fetch(); 
    return update(data); 
    }); 
}); 

答えて

3

データのサブスクリプションの後にいくつかを行うために、あなたはこのように行うことができます:あなたはデータsubcribe後にページをレンダリングしたい場合は、あなたがwaitOnを追加することができます

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 
    } 
}); 

は、あなたのルータ。

サブスクリプションの準備ができているかどうかを確認するもう1つの方法があります。定期購入が準備ができていない場合は、読み込み画面のようなものを表示することができます。

あなたのビューで自動更新するには、反応性のあるものに反応性のvar、セッションまたはコレクションが含まれている可能性があります。 次に、ヘルパーからビューに値を返すことができます。それが自動的にあなたのビューを更新します。

関連する問題