Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在订阅的数据更改时触发客户端JS方法_Javascript_Meteor_Meteor Blaze - Fatal编程技术网

Javascript 如何在订阅的数据更改时触发客户端JS方法

Javascript 如何在订阅的数据更改时触发客户端JS方法,javascript,meteor,meteor-blaze,Javascript,Meteor,Meteor Blaze,我希望我的应用程序在特定订阅数据发生更改时启动一个方法(客户端)?例如,客户端有以下订阅 Meteor.subscribe('thePlayers'); thePlayerssubscription返回通过模板以html格式显示的数据集合 因此,每当集合发生更改时,Meteor也会自动更改HTML中的数据。除此之外,我还希望我的应用程序在数据更改时立即启动一个方法,比如fire()。我应该怎么做才能做到这一点呢?正确地说,cursor.observerChanges是一条路要走。以下是如何将其

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

Meteor.subscribe('thePlayers');
thePlayers
subscription返回通过模板以html格式显示的数据集合

因此,每当集合发生更改时,Meteor也会自动更改HTML中的数据。除此之外,我还希望我的应用程序在数据更改时立即启动一个方法,比如
fire()
。我应该怎么做才能做到这一点呢?

正确地说,
cursor.observerChanges
是一条路要走。以下是如何将其用于示例(假设您的收藏名为
thePlayers
):

客户端

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


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

在不了解更多有关您尝试执行的操作的情况下,我建议您查看。
methodCaller = function (methodName) {
  return function (/* arguments */) {
    Meteor.apply(methodName, arguments)
  }
}

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