1

私はコードを持っています

datas = new Meteor.Collection("datas")
var data = datas.findOne('101abcde1f2345ac00000001')


if (Meteor.is_client) {
    Meteor.startup(function () {
        console.log(data.name)
    });
}

しかし、コンソールに表示されるのはundefinedエラーです。ただしconsole.log(data.name)、Web インスペクターの JavaScript コンソールに入力すると (おそらく、何らかの待機の後、機能します。DOM の準備が整っていることを確認するために、Meteor.startup にコードを既に入れています。何が間違っているのでしょうか?

4

1 に答える 1

6

autopublishパッケージを使用しているようです。そして(もちろん)、Meteor.startupサブスクリプションが完了するのを待ちません。

通常、 Meteor でこれを行うには、リアクティブなコンテキストとデータを使用します -

datas = new Meteor.Collection("datas")

if (Meteor.is_client){
  Meteor.autosubscribe(function(){
    var data = datas.findOne('101abcde1f2345ac00000001');
    if (data){ console.log( data.name )}
  });
}

datasコレクションに変更(?)があるときはいつでも、関数Meteor.autosubscribeが呼び出されます。

于 2012-08-16T14:12:13.597 に答える