0

クライアント側のキャッシュを制限するために、Meteorドキュメントで提案されているようにMeteor.renderにそのコレクションのMeteor.subscribeを配置することで、特定のコレクションのサブスクリプションのオンとオフを切り替えることができると考えました。リアクティブコンテキストでは、コンテキストが無効になると自動的に停止するサブスクリプションを設定します。」

ただし、「Uncaught TypeError:Converting CircularStructuretoJSON」エラーが発生し続けます。

プログラムの流れは次のとおりです。

Appliances = new Meteor.Collection 'appliances'
Alerts = new Meteor.Collection 'alerts'

クライアント側

under Meteor.startup subscribes to collection 'appliances'
Meteor.subscribe ('appliances')
Use Appliances.find{}.observe to monitor changes

新しいアプライアンスアイテムが検出されたら、Meteor.renderを使用してアラートをリアクティブにサブスクライブし、アイテムのすべてのアラートを一覧表示します

Meteor.render(function() {Meteor.subscribe(Alerts); .....}

私が何を間違えたのか分かりますか?提案?

4

1 に答える 1

1

エラーメッセージがどこから来たのかわかりません。Deps.autorun()ただし、Session変数を使用して、「必要な場合のみ」のサブスクリプションを簡単にアーカイブできます。

クライアントのどこでも:

Deps.autorun(function () {
  if (!Session.get('isViewingAlerts')) Meteor.subscribe('alerts');
});

ここでを使用するSession.set('isViewingAlerts',false)と、自動実行関数のコードが無効になり、再実行されます。

さらに、公開関数「alerts」にパラメーターを追加することで、アラートのサブセットをサブスクライブできます。

編集:
最近、動的サブスクリプションを使用するとテンプレートが反応しないという問題が発生しました。再描画時にサブスクリプションがロードされなかったため。この問題を解決するために、Metor.subcribeのコールバックを使用して、Session変数を変更し、そのテンプレートのレンダリングをサブスクリプションに依存させて準備を整え、反応性を高めました。

-最高、1月

于 2013-03-11T17:17:05.657 に答える