2

クライアントにはこれがあります:

var Coll1 = new Meteor.Collection('myCollection1');
var Coll2 = new Meteor.Collection('myCollection2');

var handle1 = null;
Deps.autorun(function () {
    var temp = Session.get('id');
    if (id) handle1 = Meteor.subscribe('myCollection1', id);
};

var handle2 = null;
Deps.autorun(function () {
    var temp = Session.get('id');
    if (id) handle2 = Meteor.subscribe('myCollection2', id);
};

そして、テンプレート コードの他の場所では、これを行います (ユーザーが DOM 要素をクリックしたとき):

Coll1.insert({name: 'new element1');
Coll2.insert({name: 'new element2');

上記のコードは、クライアントで Coll1 と Coll2 の更新をトリガーしません (ただし、サーバーでは有効です)。ブラウザを更新すると、更新が実行されます。つまり、クライアントがサーバーと同期し、新しい要素が表示されます。

私は何が欠けていますか?

4

1 に答える 1

3

ここでリアクティブ変数を変更しているようには見えませんSession.get('id')

Deps.autorun は次のように動作します

Deps.autorun(function(){
  var iAmReactive = Session.get('iAmReactive');
  <subscribe to something using iAmReactive>
});

変更のセッション値の場合iAmReactive、サブスクリプションが再実行されます

また、これは次のようなものかもしれません

Deps.autorun(function(){
  var iAmAReactiveQuery = Collection.find({<query>});
  <subscribe to something>
});

この場合、クエリのデータが変更されると、サブスクリプションが再実行されます


パブリッシュ機能はどのように見えますか? 挿入されたアイテムが、指定された id パラメータで返されますか?

于 2013-04-26T15:28:20.177 に答える