【问题标题】:Meteor Iron Router Run function when collection changesMeteor Iron Router 集合变化时的运行功能
【发布时间】:2014-06-27 17:53:33
【问题描述】:

我是 Meteor 的新手,我试图弄清楚如何在集合更改后运行一个函数。

我有一个使用 waitOn 订阅集合的路由(铁路由)。在渲染之前等待订阅准备好,这就是我想要的。

    waitOn: function () {
        return Meteor.subscribe('collection', this.params._id);
    },

对集合的任何更改都将在所有客户端上更新并自动呈现。

一旦集合发生变化,我将如何运行函数?

【问题讨论】:

  • 您可以致电observe changesobserve,具体取决于每次更改是否需要整个文档。通常,帮助程序用于更改页面的内容,而不是直接调用观察。我建议您更详细地解释您希望完成的工作。
  • 好吧,我尝试过使用助手,使用 Meteor.Defer 进行更改可以正常工作。按照第一个答案的建议,我还尝试在 Iron 路由器上使用 onData 选项。他们都工作正常。但是我应该使用哪一个?哪一种效果最好?

标签: meteor


【解决方案1】:

您可以使用onData 挂钩,前提是您使用data 帮助程序返回该数据。例如,这就是路线的样子

this.route('routename',
    path : '/abc',
    waitOn: function () {
        return Meteor.subscribe('collection', this.params._id);
    },
    data: function() {
        return Collection.findOne({_id: this.params.id});
    }
    onData: function() {
         //Do something when the data found by the above changes
    }
});

【讨论】:

  • 感谢您的回复,但我似乎无法在 Iron 路由器文档中找到 onData 选项挂钩。我正在使用工作正常的数据助手,但我仍然不确定如何在 dom 从更改中更新后运行函数
  • Ok 所以 onData 使用 Meteor.Defer 对 dom 进行更改可以正常工作。有人建议使用助手来实现相同的效果,并且效果也很好。那么现在哪一个最好用呢?还是有关系?
  • @AndreEscudero 您可以使用其中任何一种,onData 在后台使用 Deps.autorun,这有效地提供了与使用帮助程序相同的效果。如果您要显示 dom 之外的数据,我会推荐帮助程序,因为代码更简洁
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 2023-03-12
  • 2016-10-31
相关资源
最近更新 更多