我希望我的应用程序在更改特定订阅数据时触发方法(客户端)?例如,客户端具有以下订阅
Meteor.subscribe('thePlayers');
thePlayers
订阅返回通过模板在html中显示的数据集合。
因此,每当集合发生变化时,Meteor也会自动更改HTML中的数据。除了这个功能,我希望我的应用程序触发一个方法说fire()
,以便在数据发生变化后立即执行。我该怎么做才能实现这个目标?
答案 0 :(得分:0)
正确地David Weldon,cursor.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()
,请记住模板中的每个帮助程序都是被动的,这意味着每次收集时都会重新运行改变。我认为它要求你在其中使用订阅,但这需要确认。