2012-12-18 16 views
9

私は、サーバーに公開されたコレクションをクライアントに自動登録しています。私はセッションで '選択'項目を設定し、選択された項目だけを表示するテンプレートの更新をしたいと思いますが、これはサーバーへのラウンドトリップでしか行えないようです(全く不要です)。メテオールとのクライアント側の反応性?

共通:

var Missions = new Meteor.Collection('missions'); 

クライアント:

Template.missionList.missions = function() { 
    var currMission = Session.get('selectedMission'); 
    var searchMission = {}; 
    if(currMission) 
    { 
     searchMission['_id'] = currMission; 
    } 
    return Missions.find(searchMission); 
}; 
Template.missionList.events({ 
    'click div.mission': function (e, t) { 
     Session.set('selectedMission', 
      this._id == Session.get('selectedMission') ? null : this._id 
     ); 
    } 
}); 
Template.mission.isSelected = function() { 
    return this._id == Session.get('selectedMission'); 
}; 
Meteor.autosubscribe(function() { 
    Meteor.subscribe("missions"); 
}); 

サーバー:

Meteor.publish('missions', function() { 
    // there are really some filters here, but removed for simplicity 
    return Missions.find(); 
}); 

テンプレート:

<template name="missionList"> 
    <div class="missionList"> 
    {{#each missions}} 
     {{> mission}} 
    {{/each}} 
    </div> 
</template> 

<template name="mission"> 
    <div class="mission{{#if isSelected}} selected{{/if}}">details</div> 
</template> 

私の必要条件は、Template.missionList.missionsMissions.find()は、サーバーからの再要求ではなく、クライアント側のキャッシュ結果をフィルタリングすることですが、フラグや設定を見つけることができないようで、minimongoに現在利用可能なデータ。

もしこれが私がしなければならないことが完全にわかっていないのであれば、私はjQueryを使って選択されていないミッションを隠していましたが、メテオの周りに頭を浮かべていました。選択性/ローカルフィルタリングを促進する反応性。

往復を避ける方法はありますか、それとも間違って使用していますか?

答えて

4

パブリッシュ/サブスクライブ関係をセットアップすることによって、データベース複製の簡略化された形式を作成します。 Minimongoはローカルでデータのコピーを持ち、サーバーの往復なしにローカルでfind()を実行します。ネットワーク活動やサーバーコードへの呼び出しが表示されているのは、流星が定期的にバックグラウンドで作業しているためです。

これはまた、クライアントにあまりにも多くのデータを送信することに注意する必要があることを意味します。サーバー側の発行機能は、既存の選択基準に加えて、クライアントが必要とする特定のフィールドでフィルタしたい場合があります。

+0

明確にしていただきありがとうございますが、これは私が期待していることですが、時にはネットワーク活動はありませんが、それ以外の時期があるため予測が難しいようです。おそらく、それはちょうど同期を扱うとき少しランダムです。乾杯:) –

+1

[ddpパケットをリアルタイムで表示する方法](http://meteorhacks.com/discover-meteor-ddp-in-realtime.html) –

関連する問題