簡體   English   中英

角流星收集onchange

[英]angular meteor collection onchange

我有2個mongo流星集合,命名的應用程序和滑塊,我有一個訂閱它們的服務,當它們准備就緒時,它將以樹格式填充數組。

問題在於,當集合發生更改時,什么也沒有告訴服務它。 因此,如果我將集合和數組打印為html,則所有內容都將首次同步,但是在對集合進行更改之后,僅集合會更改..而不是數組

簡而言之,當數據庫中的集合發生變化時,流星集合就會更新,但我的“ section”數組不會更新

為我服務:

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正在循環這些部分。

您正在訂閱回調中調用createSections ,僅在訂閱.ready()時觸發一次。 聽起來好像您希望每次修改應用程序集合時都更新部分。 在這種情況下,您可以使用應用程序。 每次添加,更改或從您的集合中刪除文檔時,將觸發observeChanges 就像是:

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

不要忘了Minimongo游標默認情況下是反應性的,只要您在反應性數據上下文中調用它們,那么簡單的applications.find().forEach(function(doc){})就足以滿足您的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM