【问题标题】:angular meteor collection onchange角度流星集合 onchange
【发布时间】:2023-03-11 19:53:02
【问题描述】:

我有 2 个 mongo 流星集合,命名应用程序和滑块 我有一个订阅它们的服务,当它们准备好时,它会以树格式填充一个数组。

问题在于,当集合发生变化时,没有任何东西可以告诉服务。因此,如果我将集合和数组打印到 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 正在循环这些部分。

【问题讨论】:

    标签: javascript angularjs meteor angular-meteor


    【解决方案1】:

    您在订阅回调中调用createSections,它只会在订阅.ready() 时触发一次。听起来您希望每次修改应用程序集合时都更新部分。在这种情况下,您可以使用 applications.observeChanges,每次从您的集合中添加、更改或删除文档时都会触发它。比如:

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

    不要忘记 Minimongo 游标默认情况下是响应式的,只要您在响应式数据上下文中调用它们,那么简单的 applications.find().forEach(function(doc){}) 就足以满足您的目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多