如何在订阅数据更改时触发Client JS方法

时间:2015-06-21 18:58:46

标签: javascript meteor meteor-blaze

我希望我的应用程序在更改特定订阅数据时触发方法(客户端)?例如,客户端具有以下订阅

Meteor.subscribe('thePlayers');

thePlayers订阅返回通过模板在html中显示的数据集合。

因此,每当集合发生变化时,Meteor也会自动更改HTML中的数据。除了这个功能,我希望我的应用程序触发一个方法说fire(),以便在数据发生变化后立即执行。我该怎么做才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

正确地David Weldoncursor.observerChanges是可行的方法。以下是如何将它用于您的示例(假设您的集合名为thePlayers):

客户端

methodCaller = function (methodName) {
  return function (/* arguments */) {
    Meteor.apply(methodName, arguments)
  }
}

var fireCaller = methodCaller('fire')
thePlayers.find().observeChanges({
  added: fireCaller,
  changed: fireCaller,
  removed: fireCaller
})

答案 1 :(得分:0)

如果您需要在服务器上运行此fire() ,则不需要方法,只需依靠observeChanges功能或observe 1}}在您的出版物中。请参阅this question以获取如何实现这一目标的示例。

如果您需要在客户端上运行此fire(),请记住模板中的每个帮助程序都是被动的,这意味着每次收集时都会重新运行改变。我认为它要求你在其中使用订阅,但这需要确认。