6

コレクションがクライアントへのロードを完了したときに、特定のレンダリングタスクを実行する必要があります。クライアントのコレクションでデータがいつ利用可能になるかを知るための最良の戦略は何ですか。

私はこの解決策を思いついた:

Meteor.subscribe( 'alldrawings', myRendering );

function myRendering(){
  //do some no-markup stuff with the data
  //(i'm creating canvas objs and drawing on them)
}

これはそれを行う方法ですか?これ以外におすすめの方法はありますか?

4

2 に答える 2

3

リアクティブ変数を自分でセットアップできます。

alldrawingsReady = new ReactiveVar(false);

Meteor.subscribe('alldrawings', function() {
    alldrawingsReady.set(true);
});

Tracker.autorun(function(){
    if(!alldrawingsReady.get()) {
        return;
    }

    // Do some no-markup stuff with the data
    // (eg. creating canvas objs and drawing on them)
});

コレクションとテンプレートを準備する必要がある場合は、これを使用します。

Template.my_template.rendered = function() {
    this.autorun(function(){
        if(!alldrawingsReady.get()) {
            return;
        }

        // Do some DOM manipulations based on the data
    });
}
于 2015-01-03T12:34:51.357 に答える
2

もちろん、サブスクリプション コールバックを使用できます。私の知る限り、サブスクリプションが完全に更新されたかどうかを検出する唯一の方法です。

別のオプションは、コレクション カーソルでオブザーバーを使用することです: http://docs.meteor.com/#observe。しかし、オブザーバーは、データが到着するたびに1つずつ呼び出され、完了時に1回だけ呼び出されるとは思いません。

于 2012-11-17T22:18:41.343 に答える