0

アプリケーションとスライダーという名前の2つのmongo meteorコレクションがあり、それらをサブスクライブするサービスがあり、準備ができたらツリー形式で配列にデータを入力します。

問題は、コレクションが変更されたときに、それについてサービスに何も伝えていないことです。したがって、コレクションと配列をhtmlに出力すると、初めてすべてが同期されますが、コレクションの変更後はコレクションのみが変更されます..配列ではありません

つまり、データベース内のコレクションが変更されると、流星コレクションは更新されますが、私の「セクション」配列は更新されません

私のサービスで:

var applications, sliders;
var sections = [{
              name: 'Getting Started',
              //state: 'home.gettingstarted',
              type: 'link'
            }];



          $meteor.subscribe('applications').then(function(subscriptionHandle) {
            applications = $meteor.collection(Applications);
          }).then(function(subscriptionHandle) {
            $meteor.subscribe('sliders').then(function(subscriptionHandle) {
              sliders = $meteor.collection(Sliders);
              createSections();
            });
          });


function createSections() {
//some login to create a tree
            for (var i = 0; i < applications.length; i++) {
              var pages = [];
              for (var j = 0; j < sliders.length; j++) {
                if (sliders[j].appId != applications[i].id())
                  continue;
                var page = {};
                page.name = sliders[j].nm;
                page.type = "link";
                page.data = sliders[j];
                pages.push(page);
              }
              sections.push({
                name: applications[i].nm,
                type: 'toggle',
                pages: pages,
                data: applications[i]
              });
            }
          }

サービスを使用する際のコントローラー。HTMLはセクションをループしています。

4

1 に答える 1

0

サブスクリプション コールバックを呼び出しcreateSectionsています。これは、サブスクリプション時に 1 回だけ発生します.ready()。アプリケーション コレクションが変更されるたびにセクションを更新したいようです。その場合、アプリケーションを使用できます。observeChangesドキュメントがコレクションに追加、変更、または削除されるたびに起動します。何かのようなもの:

applications.observeChanges({
  added: function(id, doc) {
    // do stuff with added documents
  }
});

Minimongo カーソルは、リアクティブなデータ コンテキストで呼び出す限り、デフォルトでリアクティブであることを忘れないでください。そのため、単純なapplications.find().forEach(function(doc){})もので目的を十分に満たすことができます。

于 2015-10-09T05:17:09.487 に答える