繁体   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